SQL Server 2000 - عرض قائمة من sprocs مع منح تنفيذ معين دور حصرا ؟

StackOverflow https://stackoverflow.com/questions/1895754

سؤال

هناك تقريبا 500 sprocs في SQLSERVER 2000 قاعدة البيانات ؛ كل sproc نموذجي منحة تنفيذ بيان مشابهة لما يلي.

منح تنفيذها على [dbo].[sproc_name]
إلى [role1], [role2], [role3], [role4] ، الخ...

كيفية عرض أسماء sprocs التي تمنح دور معين إلا أن الدور حصرا.

على سبيل المثال, أنا لا أريد role1 في تركيبة مع role2 ، أو role3 ، أنا فقط أريد أن عرض تلك التي فقط role1 حد ذاته إذن التنفيذ.

هل كانت مفيدة؟

المحلول

هذا ل SQL Server 2000:

SELECT
    OBJECT_NAME(p1.id)
FROM
    syspermissions p1
WHERE
    USER_NAME(p1.grantee) = 'MyRole'
    AND
    OBJECT_NAME(p1.id) = 'MyProc'
    AND
    NOT EXISTS (SELECT *
        FROM
            syspermissions p2
        WHERE
            p1.grantee <> p2.grantee
            AND
            p1.id = p2.id)

نصائح أخرى

استنادا إلى الجواب من خلال gbn.هذا هو أكثر ملاءمة ، ولكن أساسا وقدم الجواب.

-- show all stored procs where permission is granted to 'MyRole' and only 'MyRole'
SELECT OBJECT_NAME(p1.id) AS sproc_name
  FROM    syspermissions p1
  inner join sysobjects o ON p1.id = o.id
    AND o.xtype = 'p'
    AND o.[name] not like 'dt_%'
WHERE USER_NAME(p1.grantee) = 'MyRole'
AND NOT EXISTS (
        SELECT *        
            FROM  syspermissions p2        
        WHERE p1.grantee <> p2.grantee            
        AND p1.id = p2.id
    )
ORDER BY 1
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top