sys.server_principals (Transact-SQL)

适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 Analytics Platform System (PDW)

每个服务器级别主体占一行。

注意

Microsoft Entra ID 以前称为 Azure Active Directory (Azure AD)。

列名称 数据类型 说明
name sysname 主体的名称。 在服务器中是唯一的。
principal_id int 主体的 ID 号。 在服务器中是唯一的。
sid varbinary(85) 主体的安全标识符(SID)。
Windows 主体的 SID 与其 Windows SID 匹配。
Microsoft Entra 用户标识的 SID 是其Microsoft Entra 对象 ID 的二进制表示形式。
Microsoft Entra 组的 SID 是其Microsoft Entra 对象 ID 的二进制表示形式。
Microsoft Entra 应用程序的 SID 是其Microsoft Entra 客户端 ID 的二进制表示形式。
type char(1) 主体类型:

S = SQL 登录名
R = 服务器角色

在 SQL Server、Azure SQL 托管实例 和 PDW 中可用(在 Azure SQL 数据库 预览版中):
E = Microsoft Entra ID 中的外部登录名或应用程序
X = 来自 Microsoft Entra ID 的外部组

在 SQL Server、Azure SQL 托管实例 和 PDW 中可用(不Azure SQL 数据库):
U = Windows 登录名
G = Windows 组
C = 映射到证书的登录名
K = 映射到非对称密钥的登录名
type_desc nvarchar(60) 主体类型的说明:

SQL_LOGIN
SERVER_ROLE

在 SQL Server、Azure SQL 托管实例 和 PDW 中可用(在 Azure SQL 数据库 预览版中):
EXTERNAL_LOGIN
EXTERNAL_GROUP

在 SQL Server、Azure SQL 托管实例 和 PDW 中可用(不Azure SQL 数据库):
WINDOWS_LOGIN
WINDOWS_GROUP
CERTIFICATE_MAPPED_LOGIN
ASYMMETRIC_KEY_MAPPED_LOGIN
is_disabled int 1 = 禁用登录名。
0 = 已启用登录名。
create_date datetime 主体的创建时间。
modify_date datetime 上次修改主体定义的时间。
default_database_name sysname 主体的默认数据库。
default_language_name sysname 主体的默认语言。
credential_id int 与主体关联的凭据的 ID。 如果没有与此主体关联的凭据,则credential_id为 NULL。
owning_principal_id int 服务器角色所有者的principal_id。 如果主体不是服务器角色,则为 NULL。
is_fixed_role bit 如果主体是具有固定权限的内置服务器角色之一,则返回 1。 有关详细信息,请参阅 服务器级别角色

权限

任何登录都可以查看自己的登录名称、系统登录和固定的数据库角色。 查看其他登录名需要 ALTER ANY LOGIN 或登录权限。 查看用户定义的服务器角色需要 ALTER ANY SERVER ROLE 或角色的成员身份。

在Azure SQL 数据库中,只有以下主体可以看到所有登录名:

  • 服务器角色 ##MS_LoginManager## 或特殊数据库角色 loginmanager 的成员 master
  • Microsoft Entra 管理员和 SQL Server 管理员

目录视图中仅显示用户拥有的安全对象的元数据,或用户对其拥有某些权限的安全对象的元数据。 有关详细信息,请参阅 Metadata Visibility Configuration

示例

以下查询将列出明确对服务器主体授予或拒绝的权限。

SELECT pr.principal_id, pr.name, pr.type_desc,   
    pe.state_desc, pe.permission_name   
FROM sys.server_principals AS pr   
JOIN sys.server_permissions AS pe   
    ON pe.grantee_principal_id = pr.principal_id;  

重要

固定服务器角色(非公共角色)的权限不会出现在sys.server_permissions中。 因此,服务器主体可能具有此处未列出的其他权限。

安全性目录视图 (Transact-SQL)
目录视图 (Transact-SQL)
主体(数据库引擎)
权限层次结构(数据库引擎)