sys.database_principals (Transact-SQL)
針對資料庫中每一個安全性主體,各傳回一個資料列。
資料行名稱 |
資料類型 |
說明 |
||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
name |
sysname |
主體的名稱,它在資料庫中是唯一的。 |
||||||||||
principal_id |
int |
主體的識別碼,它在資料庫中是唯一的。 |
||||||||||
type |
char(1) |
主體類型: S = SQL 使用者 U = Windows 使用者 G = Windows 群組 A = 應用程式角色 R = 資料庫角色 C = 對應至憑證的使用者 K = 對應至非對稱金鑰的使用者 |
||||||||||
type_desc |
nvarchar(60) |
主體類型的描述。 SQL_USER WINDOWS_USER WINDOWS_GROUP APPLICATION_ROLE DATABASE_ROLE CERTIFICATE_MAPPED_USER ASYMMETRIC_KEY_MAPPED_USER |
||||||||||
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 Azure。 |
||||||||||
authentication_type_desc |
nvarchar(60) |
驗證類型的描述。
不適用於 SQL Azure。 |
||||||||||
default_language_name |
sysname |
表示此主體的預設語言。 不適用於 SQL Azure。 |
||||||||||
default_language_lcid |
int |
表示此主體的預設 LCID。 不適用於 SQL Azure。 |
備註
PasswordLastSetTime 屬性值可用於所有受支援的 SQL Server 組態,但其他屬性則只有 SQL Server 在 Windows Server 2003 上執行而且同時啟用了 CHECK_POLICY 和 CHECK_EXPIRATION 時才可使用。 如需詳細資訊,請參閱<密碼原則>。
權限
任何使用者都可以查看他們自己的使用者名稱、系統使用者和固定資料庫角色。 若要查看其他使用者,則需要 ALTER ANY USER 或該使用者的權限。 若要查看使用者定義角色,則需要 ALTER ANY ROLE 或該角色的成員資格。
範例
A:列出資料庫主體的所有權限
下列查詢會列出已明確授與或拒絕資料庫主體的權限。
![]() |
---|
固定資料庫角色的權限並未出現在 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;