列出每个用户可以调用的存储过程

时间:2010-02-25 20:09:18

标签: sql-server-2005 stored-procedures

我需要一个查询来列出特定用户可以执行的每个存储过程,以及我的mssql server 2005的每个用户。

输出示例:

sa:

sp_MSrepl_startup

sp_MScleanupmergepublisher

administrator:

xp_foo

sp_bar

任何帮助将不胜感激

菲利普

1 个答案:

答案 0 :(得分:1)

最简单的是sp_helprotect,但这是遗产

这是SQL Server 2005+,但这里的代码非常基本,需要根据需要进行扩展:

SELECT
    SUSER_SNAME(u.sid), OBJECT_NAME(p.major_id)
FROM
    sys.database_permissions p
    JOIN
    sys.database_principals u ON p.grantee_principal_id = u.principal_id

如果数据库用户对没有角色的代码或嵌套角色拥有权限,那么这很快就会变得难看......