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 主体,则它与 Windows SID 匹配。 |
type | char(1) | 主体类型: S = SQL 登录名 U = Windows 登录名 G = Windows 组 R = 服务器角色 C = 映射到证书的登录名 E = 来自 Microsoft Entra ID 的外部登录 X = 来自 Microsoft Entra 组或应用程序的外部组 K = 映射到非对称密钥的登录名 |
type_desc | nvarchar(60) | 主体类型的说明: SQL_LOGIN WINDOWS_LOGIN WINDOWS_GROUP SERVER_ROLE CERTIFICATE_MAPPED_LOGIN EXTERNAL_LOGIN EXTERNAL_GROUP ASYMMETRIC_KEY_MAPPED_LOGIN |
is_disabled | int | 1 = 禁用登录名。 |
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。
示例
以下查询将列出明确对服务器主体授予或拒绝的权限。
重要
固定服务器角色(非公共角色)的权限不会出现在sys.server_permissions中。 因此,服务器主体可能具有此处未列出的其他权限。
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)
主体(数据库引擎)
权限层次结构(数据库引擎)