我需要一个查询来列出特定用户可以执行的每个存储过程,以及我的mssql server 2005的每个用户。
输出示例:
sa:
sp_MSrepl_startup
sp_MScleanupmergepublisher
administrator:
xp_foo
sp_bar
任何帮助将不胜感激
菲利普
答案 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
如果数据库用户对没有角色的代码或嵌套角色拥有权限,那么这很快就会变得难看......