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

代表驗證類型。

說明

0

無驗證

1

執行個體驗證

2

資料庫驗證

3

Windows 驗證

不適用於 SQL Azure。

authentication_type_desc

nvarchar(60)

驗證類型的描述。

說明

NONE

無驗證

INSTANCE

執行個體驗證

DATABASE

資料庫驗證

WINDOWS

Windows 驗證

不適用於 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;

請參閱

參考

目錄檢視 (Transact-SQL)

安全性目錄檢視 (Transact-SQL)

概念

主體 (Database Engine)