سؤال

في 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 إلى هذا الدور.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top