2 Stimmen

Gewähren Sie Zugriff auf Hunderte von SPs?

In Sql Server 2000/2005 habe ich einige NT-Benutzergruppen, die Zugriff auf Hunderte von gespeicherten Prozeduren erhalten müssen.

Gibt es einen einfachen Weg, dies zu tun?

4voto

Leon Bambrick Punkte 25354
  • Erstelle eine Rolle in SQL Server.
  • Schreibe ein Skript, das dieser Rolle Berechtigungen zum Verwenden dieser gespeicherten Prozeduren gewährt.
  • Füge diese NT-Benutzergruppen dieser Rolle hinzu.

1voto

Paul G Punkte 2682

Hier ist ein Skript, das ich verwende, um Berechtigungen für viele Prozeduren zu erteilen:

DECLARE @DB  sysname ; set @DB = DB_NAME()
DECLARE @U  sysname ; set @U = QUOTENAME('UserID')

DECLARE @ID           integer,
        @LAST_ID     integer,
        @NAME        varchar(1000),
        @SQL         varchar(4000)

SET @LAST_ID = 0

WHILE @LAST_ID IS NOT NULL
BEGIN
    SELECT @ID = MIN(id)
    FROM dbo.sysobjects
    WHERE id > @LAST_ID  AND type = 'P' AND category = 0

    SET @LAST_ID = @ID

    -- Wir haben einen Datensatz, also holen wir den Namen
    IF @ID IS NOT NULL
    BEGIN
        SELECT @NAME = name
        FROM dbo.sysobjects
        WHERE id = @ID

        -- Erstellen der DCL, um das GRANT durchzuführen
        SET @SQL = 'GRANT EXECUTE ON ' + @NAME + ' TO ' + @U

        -- Führen Sie das gerade generierte SQL-Statement aus
        EXEC master.dbo.xp_execresultset @SQL, @DB

    END   
END

Sie können das SELECT ändern, um eine spezifischere Gruppe von gespeicherten Prozeduren zu erhalten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X