منح الوصول إلى مئات من مقدمي الخدمات؟
-
09-06-2019 - |
سؤال
في Sql Server 2000/2005، لدي عدد قليل من مجموعات مستخدمي NT التي تحتاج إلى منح حق الوصول إلى مئات الإجراءات المخزنة.
هل هناك طريقة سهلة وجميلة للقيام بذلك؟
المحلول
إليك البرنامج النصي الذي أستخدمه لمنح الأذونات للعديد من الإجراءات:
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
يمكنك تعديل التحديد للوصول إلى مجموعة أكثر تحديدًا من العمليات المخزنة.
نصائح أخرى
- إنشاء دور في خادم SQL
- اكتب نصًا يمنح إذن الدور هذا لاستخدام تلك sprocs.
- أضف مجموعات مستخدمي NT إلى هذا الدور.
لا تنتمي إلى StackOverflow