sys.server_principals (Transact-SQL)
適用於:SQL Server Azure SQL 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)。 Windows 主體的 SID 符合其 Windows SID。 Microsoft Entra 使用者身分識別的 SID 是其Microsoft Entra 對象識別碼的二進位表示法。 Microsoft Entra 群組的 SID 是其Microsoft Entra 對象識別碼的二進位表示法。 Microsoft Entra 應用程式的 SID 是其Microsoft Entra 用戶端識別碼的二進位表示法。 |
type | char(1) | 主體類型: S = SQL 登入 R = 伺服器角色 可在 SQL Server、Azure SQL 受控執行個體 和 PDW 中使用 (在 Azure SQL 資料庫 中預覽版): E = 來自 Microsoft Entra ID 的外部登入或應用程式 X = 來自 Microsoft Entra ID 的外部群組 可在 SQL Server、Azure SQL 受控執行個體 和 PDW 中使用(而非 Azure SQL 資料庫): U = Windows 登入 G = Windows 群組 C = 對應至憑證的登入 K = 對應至非對稱金鑰的登入 |
type_desc | nvarchar(60) | 主體類型的描述: SQL_LOGIN SERVER_ROLE 可在 SQL Server、Azure SQL 受控執行個體 和 PDW 中使用 (在 Azure SQL 資料庫 中預覽版): EXTERNAL_LOGIN EXTERNAL_GROUP 可在 SQL Server、Azure SQL 受控執行個體 和 PDW 中使用(而非 Azure SQL 資料庫): WINDOWS_LOGIN WINDOWS_GROUP CERTIFICATE_MAPPED_LOGIN ASYMMETRIC_KEY_MAPPED_LOGIN |
is_disabled | int | 1 = 已停用登入。 0 = 已啟用登入。 |
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。
範例
下列查詢會列出明確授與或拒絕伺服器主體的許可權。
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)