如何在Azure SQL服务器实例中查看授予任何数据库用户的角色和权限?

34 浏览
0 Comments

如何在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日
0
0 Comments

要查看分配给用户的数据库角色,可以使用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;  

0
0 Comments

根据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数据库使用上面的查询来查看哪些用户属于这些角色。 您也可以通过在连接到数据库时使用相同的查询(减去筛选谓词)来确定每个用户数据库中用户的角色成员身份。

0