sys.database_principals (SQL Bertransaksi)

Berlaku untuk:yes SQL Server (semua versi yang didukung) YesAzure SQL Database YesAzure SQL Managed Instance yesAzure Synapse Analytics yesAnalytics Platform System (PDW)

Mengembalikan baris untuk setiap prinsip keamanan dalam database SQL Server.

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

A = Peran aplikasi

C = Pengguna dipetakan ke sertifikat

E = Pengguna eksternal dari Azure Active Directory

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 Azure Active Directory
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) utama. NULL untuk SYS dan SKEMA 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 Azure Active Directory
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 Azure Active Directory
default_language_name nama sysname Berlaku untuk: SQL Server 2012 (11.x) dan yang lebih baru.

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

Menandakan LCID default untuk prinsipal 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 untuk 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 saat 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 ini 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 (SQL Bertransaksi)
Tampilan Katalog Keamanan (Transact-SQL)
Pengguna Database Mandiri - Membuat Database Anda Portabel
Menyambungkan ke SQL Database Menggunakan Autentikasi Azure Active Directory