Получить разрешения для хранимой процедуры в SQL Server 2005 - PullRequest
13 голосов
/ 15 сентября 2009

Как получить предоставленные разрешения для хранимой процедуры в SQL Server 2005?

Ответы [ 3 ]

24 голосов
/ 15 сентября 2009
SELECT
    OBJECT_NAME(major_id), USER_NAME(grantee_principal_id), permission_name
FROM
    sys.database_permissions p
WHERE
    OBJECT_NAME(major_id) = 'MyProc'

Вы можете настроить это, чтобы присоединиться к sys.database_principals или sys.objects, если хотите тоже

11 голосов
/ 15 сентября 2009

try (ПРИМЕЧАНИЕ: работает не только для хранимых процедур):

SELECT
    dp.NAME AS principal_name
        ,dp.type_desc AS principal_type_desc
        ,o.NAME AS object_name
        ,o.type_desc
        ,p.permission_name
        ,p.state_desc AS permission_state_desc
    FROM sys.all_objects                          o
        INNER JOIN sys.database_permissions       p ON o.OBJECT_ID=p.major_id
        LEFT OUTER JOIN sys.database_principals  dp ON p.grantee_principal_id = dp.principal_id
    WHERE o.NAME = 'YourProcedureName'
1 голос
/ 22 февраля 2010

Вроде не по теме, но ... вы могли бы включить свою разработку БД, чтобы "помнить" разрешения, которые у нее были для различных объектов, и сохранять их во время разработки независимо от того, сколько раз вы отбрасываетеи создать объект ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...