如何在SQL Server数据库中查找我的权限?

22

我是一个SQL Server数据库的用户,我想知道我在使用的数据库中的访问权限/权限。我应该使用什么SQL查询来查询这些信息?

谢谢


1
https://sqlstudies.com/free-scripts/sp_dbpermissions/ - Aaron Bertrand
1
@AaronBertrand提到的存储过程比这两个答案都要好。例如,它显示我连接的用户是db_owner内置角色的成员,并列出该用户拥有的各个权限。而这两个答案都没有显示内置角色的成员身份。 - Simon Elms
2个回答

25

2017年开发工作也适用。 - MSIS
3
一定有更好的方法,我拥有的权限比这个查询结果所显示的要多。 - Paul McCarthy
1
以下内容对我也有效,使用 Azure SQL Server 托管实例数据库:SELECT * FROM fn_my_permissions(NULL, 'DATABASE'); GO - straville

5

如果您正在寻找您缺少的和拥有的东西,以下是一个有用的查找方法:

SELECT all_permissions.permission_name, p.name
FROM (
    SELECT DISTINCT permission_name
    FROM sys.database_permissions
) all_permissions
LEFT JOIN (
    SELECT b.name, a.permission_name
    FROM sys.database_permissions a
    JOIN sys.database_principals b on a.grantee_principal_id = b.principal_id 
    WHERE b.name  = '{YOUR_NAME_OR_GROUP_NAME_HERE}'
) p ON p.permission_name = all_permissions.permission_name

以上脚本恐怕不太可靠。我在一个明显拥有“select”权限的数据库上使用它,但它却说我没有权限。 - John Alan
1
如果您遇到问题,请尝试以下两个方法。确保您已经选择了一个数据库而不是“master”。另外,请通过首先运行“SELECT * FROM sys.database_principals”来检查您是否使用了正确的名称。您可能在嵌套组中或未按预期前缀用户名。如果仍然无法正常工作,告诉我们您正在使用的版本会更有帮助,而不仅仅是说它不起作用,因为它对其他人有效。 - cwalvoort

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接