sys.database_permissions (Transact-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSistem Platform Analitik (PDW)Titik akhir analitik SQL di Microsoft FabricGudang di Microsoft FabricDatabase SQL di Microsoft Fabric

Mengembalikan baris untuk setiap izin atau izin pengecualian kolom dalam database. Untuk kolom, ada baris untuk setiap izin yang berbeda dari izin tingkat objek yang sesuai. Jika izin kolom sama dengan izin objek yang sesuai, tidak ada baris untuk itu dan izin yang diterapkan adalah objek.

Important

Izin tingkat kolom mengambil alih izin tingkat objek pada entitas yang sama.

Nama kolom Jenis data Description
class tinyint Mengidentifikasi kelas tempat izin ada. Untuk informasi selengkapnya, lihat sys.securable_classes (Transact-SQL).

0 = Basis data
1 = Objek atau Kolom
3 = Skema
4 = Prinsipal Database
5 = Assembly - Berlaku untuk: SQL Server 2008 (10.0.x) dan versi yang lebih baru.
6 = Jenis
10 = Koleksi Skema XML -
Berlaku untuk: SQL Server 2008 (10.0.x) dan versi yang lebih baru.
15 = Jenis Pesan - Berlaku untuk: SQL Server 2008 (10.0.x) dan versi yang lebih baru.
16 = Kontrak Layanan - Berlaku untuk: SQL Server 2008 (10.0.x) dan versi yang lebih baru.
17 = Layanan - Berlaku untuk: SQL Server 2008 (10.0.x) dan versi yang lebih baru.
18 = Pengikatan Layanan Jarak Jauh - Berlaku untuk: SQL Server 2008 (10.0.x) dan versi yang lebih baru.
19 = Rute - Berlaku untuk: SQL Server 2008 (10.0.x) dan versi yang lebih baru.
23 =Katalog Teks Lengkap - Berlaku untuk: SQL Server 2008 (10.0.x) dan versi yang lebih baru.
24 = Kunci Konten - Berlaku untuk: SQL Server 2008 (10.0.x) dan versi yang lebih baru.
25 = Sertifikat - Berlaku untuk: SQL Server 2008 (10.0.x) dan versi yang lebih baru.
26 = Kunci Asimetris - Berlaku untuk: SQL Server 2008 (10.0.x) dan versi yang lebih baru.
29 = Daftar Henti Fulltext - Berlaku untuk: SQL Server 2008 (10.0.x) dan versi yang lebih baru.
31 = Daftar Properti Pencarian - Berlaku untuk: SQL Server 2008 (10.0.x) dan versi yang lebih baru.
32 = Kredensial Cakupan Database - Berlaku untuk: SQL Server 2016 (13.x) dan versi yang lebih baru.
34 = Bahasa Eksternal - Berlaku untuk: SQL Server 2019 (15.x) dan versi yang lebih baru.
class_desc nvarchar(60) Deskripsi kelas tempat izin ada.

DATABASE

OBJECT_OR_COLUMN

SCHEMA

DATABASE_PRINCIPAL

ASSEMBLY

TYPE

XML_SCHEMA_COLLECTION

MESSAGE_TYPE

SERVICE_CONTRACT

SERVICE

REMOTE_SERVICE_BINDING

ROUTE

FULLTEXT_CATALOG

SYMMETRIC_KEYS

CERTIFICATE

ASYMMETRIC_KEY

FULLTEXT STOPLIST

SEARCH PROPERTY LIST

DATABASE SCOPED CREDENTIAL

EXTERNAL LANGUAGE
major_id int ID hal di mana izin ada, ditafsirkan sesuai dengan kelas. Biasanya, major_id jenis ID sederhana yang berlaku untuk apa yang diwakili kelas.

0 = Database itu sendiri

>0 = ID Objek untuk objek pengguna

<0 = ID Objek untuk objek sistem
minor_id int ID sekunder dari hal yang izinnya ada, ditafsirkan sesuai dengan kelas. Seringkali, minor_id adalah nol, karena tidak ada subkataan yang tersedia untuk kelas objek. Jika tidak, itu adalah ID Kolom tabel.
grantee_principal_id int ID utama database tempat izin diberikan.
grantor_principal_id int ID utama database pemberi izin ini.
type char(4) Jenis izin database. Untuk daftar jenis izin, lihat tabel berikutnya.
permission_name nvarchar(128) Nama izin.
state char(1) Status izin:

D = Tolak

R = Cabut

G = Hibah

W = Hibah dengan opsi hibah
state_desc nvarchar(60) Deskripsi status izin:

DENY

REVOKE

GRANT

GRANT_WITH_GRANT_OPTION

Izin Database

Jenis izin berikut dimungkinkan.

Jenis izin Nama izin Berlaku untuk dapat diamankan
AADS UBAH APA SAJA DATABASEEVENT SESSION DATABASE
AAMK UBAH MASKER APA PUN DATABASE
AEDS MENGUBAH SEMUA EXTERNAL DATA SOURCE DATABASE
AEFF MENGUBAH SEMUA EXTERNAL FILE FORMAT DATABASE
AL ALTER APPLICATION ROLE, , ASSEMBLY, ASYMMETRIC KEY, CERTIFICATECONTRACTDATABASEFULLTEXT CATALOGMESSAGE TYPEREMOTE SERVICE BINDINGROLEROUTESCHEMASERVICESYMMETRIC KEYUSERXML SCHEMA COLLECTION
ALAK MENGUBAH SEMUA ASYMMETRIC KEY DATABASE
ALAR MENGUBAH SEMUA APPLICATION ROLE DATABASE
ALAS MENGUBAH SEMUA ASSEMBLY DATABASE
ALCF MENGUBAH SEMUA CERTIFICATE DATABASE
ALDS MENGUBAH RUANG DATA APA PUN DATABASE
ALED UBAH APA SAJA DATABASEEVENT NOTIFICATION DATABASE
ALFT MENGUBAH SEMUA FULLTEXT CATALOG DATABASE
ALMT MENGUBAH SEMUA MESSAGE TYPE DATABASE
ALRL MENGUBAH SEMUA ROLE DATABASE
ALRT MENGUBAH SEMUA ROUTE DATABASE
ALSB MENGUBAH SEMUA REMOTE SERVICE BINDING DATABASE
ALSC MENGUBAH SEMUA CONTRACT DATABASE
ALSK MENGUBAH SEMUA SYMMETRIC KEY DATABASE
ALSM MENGUBAH SEMUA SCHEMA DATABASE
ALSV MENGUBAH SEMUA SERVICE DATABASE
ALTG UBAH DDL APA PUN DATABASETRIGGER DATABASE
ALUS MENGUBAH SEMUA USER DATABASE
AUTH AUTHENTICATE DATABASE
BADB BACKUP DATABASE DATABASE
BALO BACKUP CATATAN DATABASE
CL CONTROL APPLICATION ROLE, , ASSEMBLY, ASYMMETRIC KEYCERTIFICATECONTRACTDATABASEFULLTEXT CATALOGMESSAGE TYPEREMOTE SERVICE BINDINGROLEROUTESCHEMASERVICESYMMETRIC KEYTYPEUSERXML SCHEMA COLLECTION
CO CONNECT DATABASE
CORP MENGHUBUNGKAN REPLIKASI DATABASE
CP CHECKPOINT DATABASE
CRAG CREATE AGGREGATE DATABASE
CRAK CREATE ASYMMETRIC KEY DATABASE
CRAS CREATE ASSEMBLY DATABASE
CRCF CREATE CERTIFICATE DATABASE
CRDB CREATE DATABASE DATABASE
CRDF CREATE DEFAULT DATABASE
CRED CREATE DATABASE DDL EVENT NOTIFICATION DATABASE
CRFN CREATE FUNCTION DATABASE
CRFT CREATE FULLTEXT CATALOG DATABASE
CRMT CREATE MESSAGE TYPE DATABASE
CRPR CREATE PROCEDURE DATABASE
CRQU CREATE QUEUE DATABASE
CRRL CREATE ROLE DATABASE
CRRT CREATE ROUTE DATABASE
CRRU CREATE RULE DATABASE
CRSB CREATE REMOTE SERVICE BINDING DATABASE
CRSC CREATE CONTRACT DATABASE
CRSK CREATE SYMMETRIC KEY DATABASE
CRSM CREATE SCHEMA DATABASE
CRSN CREATE SYNONYM DATABASE
CRSO Berlaku untuk: SQL Server 2012 (11.x) dan versi yang lebih baru.

CREATE SEQUENCE
DATABASE
CRSV CREATE SERVICE DATABASE
CRTB CREATE TABLE DATABASE
CRTY CREATE TYPE DATABASE
CRVW CREATE VIEW DATABASE
CRXS Berlaku untuk: SQL Server 2008 (10.0.x) dan versi yang lebih baru.

CREATE XML SCHEMA COLLECTION
DATABASE
DABO MENGELOLA DATABASE OPERASI MASSAL DATABASE
DL DELETE DATABASE, OBJEK, SCHEMA
EAES JALANKAN SKRIP EKSTERNAL APA PUN DATABASE
EX EXECUTE ASSEMBLY, DATABASE, OBJEK, SCHEMA, TYPE, XML SCHEMA COLLECTION
IM IMPERSONATE USER
IN INSERT DATABASE, OBJEK, SCHEMA
RC RECEIVE OBJECT
RF REFERENCES ASSEMBLY, , ASYMMETRIC KEYCERTIFICATE, CONTRACTDATABASEFULLTEXT CATALOG, , , MESSAGE TYPESCHEMASYMMETRIC KEYTYPEXML SCHEMA COLLECTION
SL SELECT DATABASE, OBJEK, SCHEMA
SN SEND SERVICE
SPLN SHOWPLAN DATABASE
SUQN BERLANGGANAN PEMBERITAHUAN KUERI DATABASE
TO AMBIL KEPEMILIKAN ASSEMBLY, , ASYMMETRIC KEY, CERTIFICATECONTRACTDATABASEFULLTEXT CATALOGMESSAGE TYPEREMOTE SERVICE BINDINGROLEROUTESCHEMASERVICESYMMETRIC KEYTYPEXML SCHEMA COLLECTION
UP UPDATE DATABASE, OBJEK, SCHEMA
VW VIEW DEFINISI APPLICATION ROLE, , ASSEMBLY, ASYMMETRIC KEYCERTIFICATECONTRACTDATABASEFULLTEXT CATALOGMESSAGE TYPEREMOTE SERVICE BINDINGROLEROUTESCHEMASERVICESYMMETRIC KEYTYPEUSERXML SCHEMA COLLECTION
VWCK VIEWDEFINISI APA PUN COLUMN ENCRYPTION KEY DATABASE
VWCM VIEWDEFINISI APA PUN COLUMN MASTER KEY DATABASE
VWCT VIEW PELACAKAN PERUBAHAN TABLE, SCHEMA
VWDS VIEW DATABASE NEGARA DATABASE

REVOKE dan izin pengecualian kolom

Dalam kebanyakan kasus, perintah akan REVOKE menghapus entri GRANT atau DENY dari sys.database_permissions.

Namun, dimungkinkan untuk GRANT atau DENY izin pada objek dan kemudian REVOKE izin tersebut pada kolom. Izin pengecualian kolom ini akan muncul seperti REVOKE pada sys.database_permissions. Pertimbangkan contoh berikut:

GRANT SELECT ON Person.Person TO [Sales];

REVOKE SELECT ON Person.Person(AdditionalContactInfo) FROM [Sales];

Izin ini akan muncul dalam sys.database_permissions sebagai satu GRANT (pada tabel) dan satu REVOKE (pada kolom).

Important

REVOKE berbeda dari DENY, karena prinsipal Sales mungkin masih memiliki akses ke kolom melalui izin lain. Seandainya kami menolak izin daripada mencabutnya, Sales tidak akan dapat melihat isi kolom karena DENY selalu menggantikan GRANT.

Permissions

Setiap pengguna dapat melihat izin mereka sendiri. Untuk melihat izin untuk pengguna lain, memerlukan VIEW DEFINITION, ALTER ANY USER, atau izin apa pun pada pengguna. Untuk melihat peran yang ditentukan pengguna, memerlukan ALTER ANY ROLE, atau keanggotaan dalam peran (seperti publik).

Visibilitas metadata dalam tampilan katalog terbatas pada keamanan yang dimiliki pengguna, atau di mana pengguna diberikan beberapa izin. Untuk informasi selengkapnya, lihat Konfigurasi Visibilitas Metadata.

Izin untuk SQL Server 2022 dan yang lebih baru

Memerlukan izin VIEW SECURITY DEFINITION pada database.

Examples

A. Mencantumkan semua izin prinsipal database

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

Important

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  
INNER 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 ke sys.objectssys.database_permissions

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
INNER JOIN sys.database_permissions AS pe ON pe.grantee_principal_id = pr.principal_id
INNER JOIN sys.objects AS o ON pe.major_id = o.object_id
INNER JOIN sys.schemas AS s ON o.schema_id = s.schema_id
WHERE pe.class = 1;

C. Mencantumkan izin untuk objek tertentu

Anda bisa menggunakan contoh sebelumnya untuk mengkueri izin khusus untuk satu objek database.

Misalnya, pertimbangkan izin terperinci berikut yang diberikan kepada pengguna test database dalam databaseAdventureWorksDW2025sampel :

GRANT SELECT ON dbo.vAssocSeqOrders TO [test];

Temukan izin terperinci yang ditetapkan ke dbo.vAssocSeqOrders:

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
INNER JOIN sys.database_permissions AS pe ON pe.grantee_principal_id = pr.principal_id
INNER JOIN sys.objects AS o ON pe.major_id = o.object_id
INNER JOIN sys.schemas AS s ON o.schema_id = s.schema_id
WHERE pe.class = 1
    AND o.name = 'vAssocSeqOrders'
    AND s.name = 'dbo';

Mengembalikan output:

principal_id    name    type_desc    authentication_type_desc    state_desc    permission_name    ObjectName
5    test    SQL_USER    INSTANCE    GRANT    SELECT    dbo.vAssocSeqOrders

Langkah selanjutnya