SQL 获取sql server 2005中存储过程的权限

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/1427863/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-01 03:37:39  来源:igfitidea点击:

Get permissions for stored procedure in sql server 2005

sqlsql-serversql-server-2005securitypermissions

提问by Tim Abell

How do I get the granted permissions for a stored procedure in sql server 2005?

如何在 sql server 2005 中获得对存储过程的授予权限?

回答by gbn

SELECT
    OBJECT_NAME(major_id), USER_NAME(grantee_principal_id), permission_name
FROM
    sys.database_permissions p
WHERE
    OBJECT_NAME(major_id) = 'MyProc'

You can tweak this to join to sys.database_principals, or sys.objectsif you want too

您可以调整它以加入sys.database_principals,或者sys.objects如果您也想要加入

回答by KM.

try (NOTE: works for more than stored procedures):

尝试(注意:不仅适用于存储过程):

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'

回答by Yordan Georgiev

Kind of off topic, but ... you could enableyou development db to "remember" the permissions it has had on different objects and keep them during development time regardless of how-many times you drop and create an object ...

有点离题,但是……您可以使开发数据库“记住”它对不同对象的权限,并在开发期间保留它们,无论您删除和创建对象多少次……