2009-12-13 2 views
0

В моей базе данных SQLSERVER 2000 имеется около 500 sprocs; каждый sproc имеет типичный оператор Grant Execute, аналогичный следующему.SQL Server 2000 - Просмотр списка sprocs с помощью GRANT EXECUTE исключительно для определенной роли?

GRANT EXECUTE ON [DBO]. [Sproc_name]
TO [role1], [роль2], [role3], [role4], и т.д ...

Как просмотреть имена sprocs, которые имеют определенную роль и только эту особую роль.

Например, я НЕ хочу role1 в сочетании с role2 или role3, я просто хочу просмотреть те, где только role1 сам имеет разрешение на выполнение.

+0

принадлежит на superuser.com ... –

+0

@Mitch: ServerFault если где-нибудь, но это также программ, связанных с SONE способами – gbn

+0

Мой интерес к этому вопросу чисто программирование связаны между собой. Программа GUI вызывает хранимые процедуры, пользователи принадлежат к ролям. Я программист должен запрограммировать сохраненные procs и разработать, какие разрешения предоставить! – joedotnot

ответ

1

Это для 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) 
+0

По существу, что я искал! Спасибо. (Кстати, «MyProc» не должен находиться в предложении where, так как нам нужен список sprocs). Мой измененный ответ ниже, но по сути вы получаете кредит. – joedotnot

1

на основе ответа по ГБН. Это более уместно, но, по сути, он дал ответ.

-- 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 
Смежные вопросы