我知道我可以通过使用sys.fn_my_permissions
以下命令查询有效权限:
USE myDatabase;
SELECT * FROM fn_my_permissions('dbo.myTable', 'OBJECT')
entity_name | subentity_name | permission_name
------------------------------------------------
dbo.myTable | | SELECT
dbo.myTable | | UPDATE
...
这告诉我当前用户是否对myTable
database 具有SELECT,INSERT,UPDATE等权限myDatabase
。
是否可以轻松找出用户为何具有这些权限?例如,我很想拥有一个fn_my_permissions_ex
输出附加reason
列的函数:
USE myDatabase;
SELECT * FROM fn_my_permissions_ex('dbo.myTable', 'OBJECT')
entity_name | subentity_name | permission_name | reason
------------------------------------------------------------------------------------------------------------------------------------
dbo.myTable | | SELECT | granted to database role public
dbo.myTable | | UPDATE | member of group MYDOMAIN\Superusers, which belongs to database role db_datawriter
...
不幸的是,我在SQL Server文档中找不到这样的功能。是否有提供此功能的工具或脚本?
为什么不将其导出为txt文件?您使用的是什么操作系统?
—
jcho360
@ jcho360:没有功能
—
海因兹
fn_my_permission_ex
,因此我无法导出任何内容。我问是否有一个功能或具有该功能的工具。
您正在使用SSMS吗?
—
jcho360
很棒的问题。我一直在努力解决这一问题。fn_my_permissions有点用,但是经常显示我无法跟踪到源的权限。
—
PseudoToad 2014年