SQL Server 2000 - عرض قائمة من sprocs مع منح تنفيذ معين دور حصرا ؟
-
19-09-2019 - |
سؤال
هناك تقريبا 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
لا تنتمي إلى StackOverflow