sys.database_principals (T-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)Titik akhir analitik SQL di Microsoft FabricWarehouse di Microsoft Fabric

Mengembalikan baris untuk setiap prinsip keamanan dalam database SQL Server.

Catatan

ID Microsoft Entra sebelumnya dikenal sebagai Azure Active Directory (Azure AD).

Deskripsi kolom

Nama kolom Jenis data Deskripsi
nama nama sysname Nama utama, unik dalam database.
principal_id int ID utama, unik dalam database.
jenis karakter(1) Jenis utama:

A = Peran aplikasi

C = Pengguna dipetakan ke sertifikat

E = Pengguna eksternal dari ID Microsoft Entra

G = Grup Windows

K = Pengguna dipetakan ke kunci asimetris

R = Peran database

S = Pengguna SQL

U = Pengguna Windows

X = Grup eksternal dari grup atau aplikasi Microsoft Entra
type_desc nvarchar(60) Deskripsi jenis utama.

APPLICATION_ROLE

CERTIFICATE_MAPPED_USER

EXTERNAL_USER

WINDOWS_GROUP

ASYMMETRIC_KEY_MAPPED_USER

DATABASE_ROLE

SQL_USER

WINDOWS_USER

EXTERNAL_GROUPS
default_schema_name nama sysname Nama yang akan digunakan ketika nama SQL tidak menentukan skema. Null untuk prinsipal bukan tipe S, U, atau A.
create_date datetime Waktu di mana prinsipal dibuat.
modify_date datetime Waktu di mana prinsipal terakhir dimodifikasi.
owning_principal_id int ID prinsipal yang memiliki prinsipal ini. Semua Peran Database tetap dimiliki oleh dbo secara default.
Sid varbinary(85) SID (Pengidentifikasi Keamanan) dari prinsipal. NULL untuk SKEMA SYS dan INFORMASI.
is_fixed_role bit Jika 1, baris ini mewakili entri untuk salah satu peran database tetap: db_owner, db_accessadmin, db_datareader, db_datawriter, db_ddladmin, db_securityadmin, db_backupoperator, db_denydatareader, db_denydatawriter.
authentication_type int Berlaku untuk: SQL Server 2012 (11.x) dan yang lebih baru.

Menandakan jenis autentikasi. Berikut ini adalah nilai yang mungkin dan deskripsinya.

0 : Tidak ada autentikasi
1 : Autentikasi instans
2 : Autentikasi database
3 : Autentikasi Windows
4 : Autentikasi Microsoft Entra
authentication_type_desc nvarchar(60) Berlaku untuk: SQL Server 2012 (11.x) dan yang lebih baru.

Deskripsi jenis autentikasi. Berikut ini adalah nilai yang mungkin dan deskripsinya.

NONE : Tidak ada autentikasi
INSTANCE : Autentikasi instans
DATABASE : Autentikasi database
WINDOWS : Autentikasi Windows
EXTERNAL: Autentikasi Microsoft Entra
default_language_name nama sysname Berlaku untuk: SQL Server 2012 (11.x) dan yang lebih baru.

Menandakan bahasa default untuk prinsip ini.
default_language_lcid int Berlaku untuk: SQL Server 2012 (11.x) dan yang lebih baru.

Menandakan LCID default untuk perwakilan ini.
allow_encrypted_value_modifications bit Berlaku untuk: SQL Server 2016 (13.x) dan yang lebih baru, SQL Database.

Menekan pemeriksaan metadata kriptografi pada server dalam operasi penyalinan massal. Ini memungkinkan pengguna menyalin data secara massal yang dienkripsi menggunakan Always Encrypted, antara tabel atau database, tanpa mendekripsi data. Defaultnya adalah NONAKTIF.

Keterangan

Properti PasswordLastSetTime tersedia di semua konfigurasi SQL Server yang didukung, tetapi properti lain hanya tersedia ketika SQL Server berjalan di Windows Server 2003 atau yang lebih baru dan CHECK_POLICY dan CHECK_EXPIRATION diaktifkan. Lihat Kebijakan Kata Sandi untuk informasi selengkapnya. Nilai principal_id dapat digunakan kembali jika prinsipal telah dihilangkan dan oleh karena itu tidak dijamin akan terus meningkat.

Izin

Setiap pengguna dapat melihat nama pengguna mereka sendiri, pengguna sistem, dan peran database tetap. Untuk melihat pengguna lain, memerlukan ALTER ANY USER, atau izin pada pengguna. Untuk melihat peran yang ditentukan pengguna, memerlukan UBAH PERAN APA PUN, atau keanggotaan dalam peran tersebut.

Contoh

A: Mencantumkan semua izin prinsipal database

Kueri berikut mencantumkan izin yang secara eksplisit diberikan atau ditolak untuk prinsipal database.

Penting

Izin peran database tetap tidak muncul di sys.database_permissions. Oleh karena itu, prinsipal database mungkin memiliki izin tambahan yang tidak tercantum di sini.

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: Mencantumkan izin pada objek skema dalam database

Kueri berikut menggabungkan sys.database_principals dan sys.database_permissions ke sys.objects dan sys.schemas untuk mencantumkan izin yang diberikan atau ditolak untuk objek skema tertentu.

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;  

Contoh: Azure Synapse Analytics and Analytics Platform System (PDW)

C: Mencantumkan semua izin prinsipal database

Kueri berikut mencantumkan izin yang secara eksplisit diberikan atau ditolak untuk prinsipal database.

Penting

Izin peran database tetap tidak muncul di sys.database_permissions. Oleh karena itu, prinsipal database mungkin memiliki izin tambahan yang tidak tercantum di sini.

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: Mencantumkan izin pada objek skema dalam database

Kueri berikut bergabung sys.database_principals dan sys.database_permissions ke sys.objects dan sys.schemas untuk mencantumkan izin yang diberikan atau ditolak untuk objek skema tertentu.

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;  

Lihat Juga

Prinsipal (Mesin Database)
sys.server_principals (T-SQL)
Tampilan Katalog Keamanan (Transact-SQL)
Pengguna Database Mandiri - Membuat Database Anda Portabel
Koneksi ke Azure SQL dengan autentikasi Microsoft Entra