【问题标题】:how could I find the roles and permissions in sql server having administrative privileges如何在具有管理权限的 sql server 中找到角色和权限
【发布时间】:2021-01-23 04:54:18
【问题描述】:

我想在 sql server 中找到具有管理权限的角色和权限

【问题讨论】:

  • 您对“管理员”的定义是什么?
  • 有权执行各种操作的角色,例如:sysadmin
  • 看看sys.server_role_members 对象。
  • 所以您的意思是sys.server_role_members 中的用户将始终映射到管理员角色?
  • USERs 不会出现在sys.server_role_members 中,因为USER 是一个数据库对象。该对象告诉您哪些服务器原则属于服务器角色;然后你可以简单地加入服务器原则对象

标签: sql sql-server admin roles sql-function


【解决方案1】:
  1. 使用 IS_SRVROLEMEMBER 的旧样式:

    SELECT   name,type_desc,is_disabled
    FROM     sys.server_principals 
    WHERE    IS_SRVROLEMEMBER ('sysadmin',name) = 1
    ORDER BY name
    
  2. 使用 sys.server_role_members

    SELECT 'Name' = sp.NAME
    ,   sp.is_disabled AS [Is_disabled]
    FROM sys.server_role_members rm
    JOIN    sys.server_principals sp ON rm.member_principal_id = sp.principal_id
    WHERE rm.role_principal_id = SUSER_ID('Sysadmin')
    
    

参考: SQL SERVER – Query to Get the List of Logins Having System Admin (sysadmin) Permission

【讨论】:

  • 现在真的是你停止使用 31 岁的隐式 JOIN 语法的时候了:Bad Habits to Kick : Using old-style JOINs。它在大约 28 年前被取代。
  • Pinal 的所有学分(参考链接)。但完全同意你的观点,没有人喜欢旧的 Oracle 风格
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-02
  • 2020-09-01
  • 2017-11-22
  • 1970-01-01
  • 1970-01-01
  • 2015-06-24
  • 1970-01-01
相关资源
最近更新 更多