Как получить предоставленные разрешения для хранимой процедуры в SQL Server 2005?
Получить разрешения для хранимой процедуры в SQL Server 2005
Ответ 1
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
, если вы тоже хотите
Ответ 2
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'
Ответ 3
Вид не по теме, но... вы могли бы включить в своем развитии db, чтобы "запомнить" разрешения, которые он имел на разных объектах и хранить их во время разработки независимо от того, сколько раз вы бросаете и создаете объект...