sys.database_principals (Transact-SQL)
適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW) SQL 分析端點在 Microsoft Fabric SQL 資料庫中的 Microsoft 網狀架構倉儲中Microsoft網狀架構
傳回 SQL Server 資料庫中每個安全性主體的數據列。
注意
Microsoft Entra ID 先前稱為 Azure Active Directory (Azure AD)。
數據列描述
資料行名稱 | 資料類型 | 描述 |
---|---|---|
name | sysname | 資料庫內唯一的主體名稱。 |
principal_id | int | 資料庫內唯一的主體標識碼。 |
type | char(1) | 主體類型: A = 應用程式角色 C = 對應至憑證的使用者 E = 來自 Microsoft Entra ID 的外部使用者 G = Windows 群組 K = 對應至非對稱金鑰的使用者 R = 資料庫角色 S = SQL 使用者 U = Windows 使用者 X = Microsoft Entra 群組或應用程式的外部群組 |
type_desc | nvarchar(60) | 主體類型的描述。 APPLICATION_ROLE CERTIFICATE_MAPPED_USER EXTERNAL_USER WINDOWS_GROUP ASYMMETRIC_KEY_MAPPED_USER DATABASE_ROLE SQL_USER WINDOWS_USER EXTERNAL_GROUPS |
default_schema_name | sysname | 當 SQL 名稱未指定架構時要使用的名稱。 非 S、U 或 A 類型的主體 Null。 |
create_date | datetime | 建立主體的時間。 |
modify_date | datetime | 上次修改主體的時間。 |
owning_principal_id | int | 擁有此主體的主體標識碼。 所有固定資料庫角色預設都由 dbo 擁有。 |
sid | varbinary(85) | 主體的 SID (安全性識別符)。 SYS 和 INFORMATION SCHEMAS 的 NULL。 |
is_fixed_role | bit | 如果為 1,則此數據列代表其中一個固定資料庫角色的專案:db_owner、db_accessadmin、db_datareader、db_datawriter、db_ddladmin、db_securityadmin、db_backupoperator、db_denydatareader、db_denydatawriter。 |
authentication_type | int | 適用於:SQL Server 2012 (11.x) 和更新版本。 表示驗證類型。 以下是可能的值及其描述。 0:無驗證 1:實例驗證 2:資料庫驗證 3 : Windows 驗證 4 :Microsoft Entra 驗證 |
authentication_type_desc | nvarchar(60) | 適用於:SQL Server 2012 (11.x) 和更新版本。 驗證類型的描述。 以下是可能的值及其描述。 NONE :沒有驗證INSTANCE :實例驗證DATABASE :資料庫驗證WINDOWS :Windows 驗證EXTERNAL :Microsoft Entra 驗證 |
default_language_name | sysname | 適用於:SQL Server 2012 (11.x) 和更新版本。 表示此主體的默認語言。 |
default_language_lcid | int | 適用於:SQL Server 2012 (11.x) 和更新版本。 表示此主體的預設 LCID。 |
allow_encrypted_value_modifications | bit | 適用於:SQL Server 2016 (13.x) 和更新版本,以及 SQL Database。 在大量複製作業時隱藏伺服器上的密碼編譯中繼資料檢查。 這可讓用戶在數據表或資料庫之間大量複製使用 Always Encrypted 加密的數據,而不需解密數據。 預設值為 OFF。 |
備註
PasswordLastSetTime 屬性可在所有支援的 SQL Server 組態上使用,但其他屬性只有在 Windows Server 2003 或更新版本上執行 SQL Server 時才能使用,而且已啟用CHECK_POLICY和CHECK_EXPIRATION。 如需詳細資訊,請參閱 密碼原則 。 在主體已卸除的情況下,可能會重複使用principal_id的值,因此不保證會不斷增加。
權限
任何使用者都可以看到自己的使用者名稱、系統使用者和固定資料庫角色。 若要查看其他使用者,需要 ALTER ANY USER 或使用者的許可權。 若要查看使用者定義的角色,需要 ALTER ANY ROLE 或角色的成員資格。
範例
答:列出資料庫主體的所有許可權
下列查詢會列出明確授與或拒絕資料庫主體的許可權。
重要
固定資料庫角色的許可權不會出現在sys.database_permissions中。 因此,資料庫主體可能會有此處未列出的其他許可權。
SELECT pr.principal_id, pr.name, pr.type_desc,
pr.authentication_type_desc, pe.state_desc, pe.permission_name
FROM sys.database_principals AS pr
JOIN sys.database_permissions AS pe
ON pe.grantee_principal_id = pr.principal_id;
B:列出資料庫內架構物件的許可權
下列查詢會將sys.database_principals和sys.database_permissions聯結至 sys.objects 和 sys.schemas,以列出授與或拒絕特定架構對象的許可權。
SELECT pr.principal_id, pr.name, pr.type_desc,
pr.authentication_type_desc, pe.state_desc,
pe.permission_name, s.name + '.' + o.name AS ObjectName
FROM sys.database_principals AS pr
JOIN sys.database_permissions AS pe
ON pe.grantee_principal_id = pr.principal_id
JOIN sys.objects AS o
ON pe.major_id = o.object_id
JOIN sys.schemas AS s
ON o.schema_id = s.schema_id;
範例:Azure Synapse Analytics 和 Analytics Platform System (PDW)
C:列出資料庫主體的所有許可權
下列查詢會列出明確授與或拒絕資料庫主體的許可權。
重要
固定資料庫角色的許可權不會出現在 中 sys.database_permissions
。 因此,資料庫主體可能會有此處未列出的其他許可權。
SELECT pr.principal_id, pr.name, pr.type_desc,
pr.authentication_type_desc, pe.state_desc, pe.permission_name
FROM sys.database_principals AS pr
JOIN sys.database_permissions AS pe
ON pe.grantee_principal_id = pr.principal_id;
D:列出資料庫內架構物件的許可權
下列查詢聯sys.database_principals
結 和 sys.database_permissions
和 ,sys.objects
sys.schemas
以列出授與或拒絕給特定架構對象的許可權。
SELECT pr.principal_id, pr.name, pr.type_desc,
pr.authentication_type_desc, pe.state_desc,
pe.permission_name, s.name + '.' + o.name AS ObjectName
FROM sys.database_principals AS pr
JOIN sys.database_permissions AS pe
ON pe.grantee_principal_id = pr.principal_id
JOIN sys.objects AS o
ON pe.major_id = o.object_id
JOIN sys.schemas AS s
ON o.schema_id = s.schema_id;
另請參閱
主體 (資料庫引擎)
sys.server_principals (Transact-SQL)
安全性目錄檢視 (Transact-SQL)
自主資料庫使用者 - 讓資料庫具有可攜性
使用 Microsoft Entra 驗證連線到 Azure SQL