Frage

In SQL Server 2000/2005, ich habe ein paar Benutzergruppen NT, die den Zugriff auf Hunderte von gespeicherten Prozeduren gewährt werden müssen.

Gibt es eine nette einfache Möglichkeit, das zu tun?

War es hilfreich?

Lösung

Hier ist ein Skript, das ich für Berechtigungen für viele Verfahren gewähren:

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

    -- We have a record so go get the name
    IF @ID IS NOT NULL
    BEGIN
        SELECT @NAME = name
        FROM dbo.sysobjects
        WHERE id = @ID

        -- Build the DCL to do the GRANT
        SET @SQL = 'GRANT EXECUTE ON ' + @NAME + ' TO ' + @U

        -- Run the SQL Statement you just generated
        EXEC master.dbo.xp_execresultset @SQL, @DB

    END   
END

Sie können die Auswahl ändern, um eine bestimmte Gruppe von gespeicherten Procs zu erhalten.

Andere Tipps

  • Erstellen Sie eine Rolle in SQL Server.
  • schreiben Skript, das diese Rolle gewährt Erlaubnis, diese sprocs zu verwenden.
  • Fügen Sie diese NT-Benutzergruppen zu dieser Rolle.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top