如何在Azure SQL服务器实例中查看授予任何数据库用户的角色和权限?
如何在Azure SQL服务器实例中查看授予任何数据库用户的角色和权限?
您能指导我如何查看Azure SQL数据库中任何数据库用户当前被授予的角色/权限,或者在MSSQL服务器实例中一般情况下的权限吗?
我有以下查询:
SELECT r.name role_principal_name, m.name AS member_principal_name FROM sys.database_role_members rm JOIN sys.database_principals r ON rm.role_principal_id = r.principal_id JOIN sys.database_principals m ON rm.member_principal_id = m.principal_id WHERE r.name IN ('loginmanager', 'dbmanager');
我还需要知道这些角色“loginmanager”和“dbmanager”被授予了什么权限?
您能帮我解决这个问题吗?
admin 更改状态以发布 2023年5月25日
要查看分配给用户的数据库角色,可以使用sys.database_role_members
以下查询返回数据库角色的成员。
SELECT DP1.name AS DatabaseRoleName, isnull (DP2.name, 'No members') AS DatabaseUserName FROM sys.database_role_members AS DRM RIGHT OUTER JOIN sys.database_principals AS DP1 ON DRM.role_principal_id = DP1.principal_id LEFT OUTER JOIN sys.database_principals AS DP2 ON DRM.member_principal_id = DP2.principal_id WHERE DP1.type = 'R' ORDER BY DP1.name;
根据MSDN文档中的sys.database_permissions,这个查询会列出所有在你所连接的数据库中明确授予或拒绝的权限。 \n
SELECT DISTINCT pr.principal_id, pr.name, pr.type_desc, pr.authentication_type_desc, pe.state_desc, pe.permission_name FROM sys.database_principals AS pr JOIN sys.database_permissions AS pe ON pe.grantee_principal_id = pr.principal_id;
\n根据Managing Databases and Logins in Azure SQL Database,loginmanager和dbmanager角色是Azure SQL Database中可用的两个服务器级安全角色。 loginmanager角色具有创建登录的权限,而dbmanager角色具有创建数据库的权限。 您可以通过对master数据库使用上面的查询来查看哪些用户属于这些角色。 您也可以通过在连接到数据库时使用相同的查询(减去筛选谓词)来确定每个用户数据库中用户的角色成员身份。