sys.server_principals (Transact-SQL)
每个服务器级别主体占一行。
适用范围:SQL Server(SQL Server 2008 到当前版本)。 |
列名 |
数据类型 |
说明 |
---|---|---|
name |
sysname |
主体的名称。 在服务器中是唯一的。 |
principal_id |
int |
主体的 ID 号。 在服务器中是唯一的。 |
sid |
varbinary(85) |
主体的 SID(安全标识符)。 如果是 Windows 主体,则它与 Windows SID 匹配。 |
type |
char(1) |
主体类型: S = SQL 登录名 U = Windows 登录名 G = Windows 组 R = 服务器角色 C = 映射到证书的登录名 K = 映射到非对称密钥的登录名 |
type_desc |
nvarchar(60) |
主体类型的说明: SQL_LOGIN WINDOWS_LOGIN WINDOWS_GROUP SERVER_ROLE CERTIFICATE_MAPPED_LOGIN 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 或相关的角色成员身份。
目录视图中仅显示用户拥有的安全对象的元数据,或用户对其拥有某些权限的安全对象的元数据。有关详细信息,请参阅元数据可见性配置。
示例
以下查询将列出明确对服务器主体授予或拒绝的权限。
重要提示 |
---|
固定服务器角色的权限不会出现在 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;