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?
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?
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 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.