【问题标题】:How to find which Database Roles are associated with a given User?如何查找与给定用户关联的数据库角色?
【发布时间】:2020-05-21 04:32:45
【问题描述】:

在 SSMS 中,我有一个用户 X,并且有 YZP 数据库角色可用,我如何检查向用户 X 添加了哪些角色?

我尝试了什么:

在 SSMS 中右键单击数据库 -> 属性 -> 权限,然后查看用户 X 的显式选项卡。我可以看到角色和用户之间没有关联的权限。我感兴趣的角色也是如此,我只看到角色的权限。

编辑:关于 GUI 解决方案,我没有可供用户或角色使用的属性选项。

【问题讨论】:

    标签: sql-server ssms roles


    【解决方案1】:

    我是这样做的:

    select user_name(role_principal_id)
    from sys.database_role_members
    where member_principal_id = user_id('your_user');
    

    【讨论】:

      【解决方案2】:

      通过图形用户界面:

      打开要检查的数据库,打开安全文件夹,打开用户文件夹。在这里,您有一个为该数据库定义的用户列表。 右键单击用户-> 属性-> 成员资格。在这里,您可以看到此数据库的已定义角色(自定义角色也最终出现在此列表中)。如果用户前面有 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 link)。 该脚本从角色到用户。对于特定用户,请填写注释参数。或者直接使用script provided by Larnu

      【讨论】:

      • 关于 GUI 解决方案,我没有可供用户或角色使用的属性选项。请看看我的编辑,谢谢。
      • @Yoda 这很奇怪。即使在我基本上没有服务器权限且数据库权限有限的服务器上,我仍然可以检查(只有我自己的)用户属性。您使用的是什么 SSMS 版本(和 SQL Server 版本)?后者应该不是很重要,但 SSMS 版本可以。
      • 这是 SSMS v17.3 和 MSSQL Server 2014。
      • @Yoda 您可以尝试将您的 SSMS 更新到更新的版本(17.3 已经有好几年了)。这似乎是一个 GUI 问题。由于您能够访问基础数据,因此不太可能是版权问题。
      【解决方案3】:

      您可以使用sys.database_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';
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-07-29
        • 1970-01-01
        • 1970-01-01
        • 2013-03-24
        • 2015-05-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多