Sql server 如何找到与给定用户关联的数据库角色?
在SSMS中,我有一个用户X,并且有Y、Z和p数据库角色可用,如何检查向用户X添加了哪些角色 我试过什么: 在SSMS中,右键单击数据库->属性->权限,然后查看用户X的显式选项卡。我可以看到权限,而不是角色和用户之间的关联。我感兴趣的角色也是如此,我只看到角色的权限Sql server 如何找到与给定用户关联的数据库角色?,sql-server,ssms,roles,Sql Server,Ssms,Roles,在SSMS中,我有一个用户X,并且有Y、Z和p数据库角色可用,如何检查向用户X添加了哪些角色 我试过什么: 在SSMS中,右键单击数据库->属性->权限,然后查看用户X的显式选项卡。我可以看到权限,而不是角色和用户之间的关联。我感兴趣的角色也是如此,我只看到角色的权限 编辑:关于GUI解决方案,我没有可用于用户或角色的属性选项 您可以使用sys.database\u principals对象来查找以下内容: SELECT u.[name] AS [UserName], r.[nam
编辑:关于GUI解决方案,我没有可用于用户或角色的属性选项 您可以使用sys.database\u principals对象来查找以下内容:
SELECT u.[name] AS [UserName],
r.[name] AS RoleName
FROM sys.database_principals u
JOIN sys.database_role_members drm ON u.principal_id = drm.member_principal_id
JOIN sys.database_principals r ON drm.role_principal_id = r.principal_id
WHERE u.[type] IN ('S','U') --SQL User or Windows User
AND u.[name] = N'X';
通过GUI:
打开要检查的数据库,打开安全文件夹,打开用户文件夹。这里有一个为此数据库定义的用户列表。
右键单击用户->属性->成员资格。在这里,您可以看到此数据库的已定义角色自定义角色也会出现在此列表中。如果用户前面有一个X/标记,则该用户具有/是该角色的一部分
通过脚本:
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'
--AND DP2.name = 'YourUserName'
ORDER BY DP1.name;
其中列出了所有角色及其成员用户。脚本来自msdn。
这个脚本从角色到用户。对于特定用户,请填写注释参数。或者直接使用。我这样做:
select user_name(role_principal_id)
from sys.database_role_members
where member_principal_id = user_id('your_user');
关于GUI解决方案,我没有可用于用户或角色的属性选项。请看一下我的编辑,谢谢。@Yoda这很奇怪。即使在我基本上没有服务器权限、数据库权限有限的服务器上,我仍然只能检查自己的用户属性。您使用的SSMS版本和SQL Server版本是什么?后者应该不重要,但SSMS版本可以。它是SSMS v17.3和MSSQL Server 2014。@Yoda您可以尝试将您的SSMS更新到更新的版本17.3已经有好几年的历史了。这似乎是一个GUI问题。由于您能够访问基础数据,因此不太可能是配股。