MS SQL Server:检查用户是否可以执行存储过程

And*_*rew 8 sql t-sql sql-server stored-procedures sql-server-2005

如何检查用户是否可以在MS SQL服务器中执行存储过程?

我可以通过连接到master数据库并执行以下内容来查看用户是否具有显式执行权限:

databasename..sp_helpprotect 'storedProcedureName', 'username'
Run Code Online (Sandbox Code Playgroud)

但是,如果用户是具有执行权限的角色的成员,则sp_helprotect将无法帮助我.

理想情况下,我希望能够打电话

databasename..sp_canexecute 'storedProcedureName', 'username'
Run Code Online (Sandbox Code Playgroud)

这将返回一个布尔.

Cad*_*oux 12

fn_my_permissionsHAS_PERMS_BY_NAME

  • 我不认为这些函数回答了原始问题,即检查**_任何给定用户_**是否对给定的存储过程具有执行权限.两个函数的MSDN文章都说它们只返回**_调用主体_**的权限,而不是任何主体. (2认同)