sys.server_principals (Transact-SQL)

適用範圍: 是SQL Server (所有支援的版本) 是Azure SQL 受控執行個體 是平行處理資料倉儲

針對每一個伺服器層級的主體,各包含一個資料列。

資料行名稱 資料類型 描述
name sysname 主體的名稱。 在伺服器中,這是唯一的。
principal_id int 主體的識別碼。 在伺服器中,這是唯一的。
varbinary(85) 主體的 SID (安全性識別碼)。 如果是 Windows 主體,則與 Windows SID 相符。
type char(1) 主體類型:

S = SQL 登入

U = Windows 登入

G = Windows 群組

R = 伺服器角色

C = 對應至憑證的登入

E = 來自 Azure Active Directory 的外部登入

X = 來自 Azure Active Directory 群組或應用程式的外部群組

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 與這個主體相關聯的認證識別碼。 如果沒有與這個主體相關聯的認證,則 credential_id 為 NULL。
owning_principal_id int 伺服器角色擁有者的 principal_id 。 如果主體不是伺服器角色,則為 NULL。
is_fixed_role bit 如果主體是具有固定許可權的其中一個內建伺服器角色,則會傳回1。 如需詳細資訊,請參閱 伺服器層級角色

權限

任何登入都可以查看他們自己的登入名稱、系統登入和固定伺服器角色。 若要查看其他登入,則需要 ALTER ANY LOGIN 或該登入的權限。 若要查看使用者定義伺服器角色,則需要 ALTER ANY SERVER ROLE 或該角色的成員資格。

目錄檢視內中繼資料的可見性會限制在使用者所擁有的安全性實體,或已授與使用者某些權限的安全性實體。 如需相關資訊,請參閱 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;  

另請參閱

安全性目錄檢視 (Transact-SQL)
目錄檢視 (Transact-SQL)
主體 (Database Engine)
權限階層 (Database Engine)