sys.server_principals (Transact-SQL)

適用於:SQL ServerAzure SQL 資料庫Azure SQL 受控執行個體Analytics Platform System (PDW)

包含每個伺服器層級主體的數據列。

注意

Microsoft Entra 標識符 先前稱為 Azure Active Directory (Azure AD)。

資料行名稱 資料類型 描述
name sysname 主體的名稱。 在伺服器內是唯一的。
principal_id int 主體的標識碼。 在伺服器內是唯一的。
varbinary(85) 主體的 SID (Security-IDentifier)。 如果 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 與此主體相關聯的認證標識碼。 如果沒有與此主體相關聯的認證,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)
主體 (資料庫引擎)
權限階層 (Database Engine)