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)