分享方式:


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 主體的標識碼。 在伺服器內是唯一的。
sid 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)