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)
主体(数据库引擎)
权限层次结构(数据库引擎)