Gewähren von Zugriff auf Hunderte von SPs?
-
09-06-2019 - |
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?
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