sys.database_permissions (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnaliz Platformu Sistemi (PDW)Microsoft Fabric'teki SQL analiz uç noktasıMicrosoft Fabric'teki ambarMicrosoft Fabric'teki SQL veritabanı

Veritabanındaki her izin veya sütun özel durum izni için bir satır döndürür. Sütunlar için, her izin için ilgili nesne düzeyi izninden farklı bir satır vardır. Sütun izni karşılık gelen nesne izniyle aynıysa, bunun için bir satır yoktur ve uygulanan izin nesnenin iznidir.

Important

Sütun düzeyi izinler, aynı varlık üzerindeki nesne düzeyi izinlerini geçersiz kılar.

Sütun adı Veri türü Description
class tinyint üzerinde iznin bulunduğu sınıfı tanımlar. Daha fazla bilgi için bkz. sys.securable_classes (Transact-SQL).

0 = Veritabanı
1 = Nesne veya Sütun
3 = Şema
4 = Veritabanı Sorumlusu
5 = Derleme - için geçerlidir: SQL Server 2008 (10.0.x) ve sonraki sürümler.
6 = Tür
10 = XML Şema Koleksiyonu -
için geçerlidir: SQL Server 2008 (10.0.x) ve sonraki sürümler.
15 = İleti Türü - için geçerlidir: SQL Server 2008 (10.0.x) ve sonraki sürümler.
16 = Hizmet Sözleşmesi - için geçerlidir: SQL Server 2008 (10.0.x) ve sonraki sürümler.
17 = Hizmet - için geçerlidir: SQL Server 2008 (10.0.x) ve sonraki sürümler.
18 = Uzak Hizmet Bağlama - için geçerlidir: SQL Server 2008 (10.0.x) ve sonraki sürümler.
19 = Yol - için geçerlidir: SQL Server 2008 (10.0.x) ve sonraki sürümler.
23 =Full-Text Kataloğu - için geçerlidir: SQL Server 2008 (10.0.x) ve sonraki sürümler.
24 = Simetrik Anahtar - için geçerlidir: SQL Server 2008 (10.0.x) ve sonraki sürümler.
25 = Sertifika - için geçerlidir: SQL Server 2008 (10.0.x) ve sonraki sürümler.
26 = Asimetrik Anahtar - için geçerlidir: SQL Server 2008 (10.0.x) ve sonraki sürümler.
29 = Tam Metin Durdurma Listesi - için geçerlidir: SQL Server 2008 (10.0.x) ve sonraki sürümler.
31 = Arama Özelliği Listesi - için geçerlidir: SQL Server 2008 (10.0.x) ve sonraki sürümler.
32 = Veritabanı Kapsamlı Kimlik Bilgileri - için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümler.
34 = Dış Dil - için geçerlidir: SQL Server 2019 (15.x) ve sonraki sürümler.
class_desc nvarchar(60) üzerinde izin bulunan sınıfın açıklaması.

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 İznin bulunduğu öğenin kimliği, sınıfa göre yorumlanır. Genellikle, major_id yalnızca sınıfın temsil ettiği şey için geçerli olan kimlik türü.

0 = Veritabanının kendisi

kullanıcı nesneleri için >0 = Object-IDs

sistem nesneleri için <0 = Object-IDs
minor_id int sınıfına göre yorumlanan, üzerinde iznin bulunduğu öğenin Secondary-ID. Nesne sınıfı için kullanılabilir alt kategori olmadığından genellikle minor_id sıfır olur. Aksi takdirde, tablonun Column-ID.
grantee_principal_id int İzinlerin verildiği veritabanı asıl kimliği.
grantor_principal_id int Bu izinleri verenin veritabanı asıl kimliği.
type char(4) Veritabanı izin türü. İzin türlerinin listesi için sonraki tabloya bakın.
permission_name nvarchar(128) İzin adı.
state char(1) İzin belirtiliyor:

D = Reddet

R = İptal Et

G = Verme

W = Verme Seçeneğiyle Verme
state_desc nvarchar(60) İzin durumunun açıklaması:

DENY

REVOKE

GRANT

GRANT_WITH_GRANT_OPTION

Veritabanı İzinleri

Aşağıdaki izin türleri mümkündür.

İzin türü İzin adı Güvenli hale getirilebilir için geçerlidir
AADS HERHANGI BIRINI DEĞIŞTIR DATABASEEVENT SESSION DATABASE
AAMK HERHANGI BIR MASKEYI DEĞIŞTIRME DATABASE
AEDS HERHANGI BIR EXTERNAL DATA SOURCE DEĞIŞTIRME DATABASE
AEFF HERHANGI BIR EXTERNAL FILE FORMAT DEĞIŞTIRME DATABASE
AL ALTER APPLICATION ROLE, ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACTDATABASEFULLTEXT CATALOGMESSAGE TYPE, , NESNE, , REMOTE SERVICE BINDINGROLEROUTESCHEMASERVICESYMMETRIC KEYUSERXML SCHEMA COLLECTION
ALAK HERHANGI BIR ASYMMETRIC KEY DEĞIŞTIRME DATABASE
ALAR HERHANGI BIR APPLICATION ROLE DEĞIŞTIRME DATABASE
ALAS HERHANGI BIR ASSEMBLY DEĞIŞTIRME DATABASE
ALCF HERHANGI BIR CERTIFICATE DEĞIŞTIRME DATABASE
ALDS TÜM DATASPACE'LERI DEĞIŞTIRME DATABASE
ALED HERHANGI BIRINI DEĞIŞTIR DATABASEEVENT NOTIFICATION DATABASE
ALFT HERHANGI BIR FULLTEXT CATALOG DEĞIŞTIRME DATABASE
ALMT HERHANGI BIR MESSAGE TYPE DEĞIŞTIRME DATABASE
ALRL HERHANGI BIR ROLE DEĞIŞTIRME DATABASE
ALRT HERHANGI BIR ROUTE DEĞIŞTIRME DATABASE
ALSB HERHANGI BIR REMOTE SERVICE BINDING DEĞIŞTIRME DATABASE
ALSC HERHANGI BIR CONTRACT DEĞIŞTIRME DATABASE
ALSK HERHANGI BIR SYMMETRIC KEY DEĞIŞTIRME DATABASE
ALSM HERHANGI BIR SCHEMA DEĞIŞTIRME DATABASE
ALSV HERHANGI BIR SERVICE DEĞIŞTIRME DATABASE
ALTG HERHANGI BIR DATABASE DDL'YI DEĞIŞTIR TRIGGER DATABASE
ALUS HERHANGI BIR USER DEĞIŞTIRME DATABASE
AUTH AUTHENTICATE DATABASE
BADB BACKUP DATABASE DATABASE
BALO BACKUP GÜNLÜK DATABASE
CL CONTROL APPLICATION ROLE, ASSEMBLY, ASYMMETRIC KEY, CERTIFICATECONTRACTDATABASEFULLTEXT CATALOGMESSAGE TYPE, , , NESNE, , REMOTE SERVICE BINDINGROLEROUTESCHEMASERVICESYMMETRIC KEYTYPEUSERXML SCHEMA COLLECTION
CO CONNECT DATABASE
CORP ÇOĞALTMA BAĞLANTI 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 için geçerlidir: SQL Server 2012 (11.x) ve sonraki sürümler.

CREATE SEQUENCE
DATABASE
CRSV CREATE SERVICE DATABASE
CRTB CREATE TABLE DATABASE
CRTY CREATE TYPE DATABASE
CRVW CREATE VIEW DATABASE
CRXS için geçerlidir: SQL Server 2008 (10.0.x) ve sonraki sürümler.

CREATE XML SCHEMA COLLECTION
DATABASE
DABO TOPLU OPERASYONLARI YÖNETIN DATABASE DATABASE
DL DELETE DATABASE, NESNE, SCHEMA
EAES HERHANGI BIR DıŞ BETIĞI YÜRÜTME DATABASE
EX EXECUTE ASSEMBLY, DATABASE, NESNE, SCHEMA, TYPE, XML SCHEMA COLLECTION
IM IMPERSONATE USER
IN INSERT DATABASE, NESNE, SCHEMA
RC RECEIVE OBJECT
RF REFERENCES ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACT, DATABASEFULLTEXT CATALOGMESSAGE TYPE, NESNE, SCHEMA, , SYMMETRIC KEYTYPEXML SCHEMA COLLECTION
SL SELECT DATABASE, NESNE, SCHEMA
SN SEND SERVICE
SPLN SHOWPLAN DATABASE
SUQN SORGU BILDIRIMLERINE ABONE OLMA DATABASE
TO SAHIPLENMEK ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACT, DATABASEFULLTEXT CATALOGMESSAGE TYPENESNE, , REMOTE SERVICE BINDINGROLEROUTESCHEMASERVICESYMMETRIC KEYTYPEXML SCHEMA COLLECTION
UP UPDATE DATABASE, NESNE, SCHEMA
VW VIEW TANIMI APPLICATION ROLE, ASSEMBLY, ASYMMETRIC KEY, CERTIFICATECONTRACTDATABASEFULLTEXT CATALOGMESSAGE TYPE, , , NESNE, , REMOTE SERVICE BINDINGROLEROUTESCHEMASERVICESYMMETRIC KEYTYPEUSERXML SCHEMA COLLECTION
VWCK VIEW HERHANGI BIR COLUMN ENCRYPTION KEY TANım DATABASE
VWCM VIEW HERHANGI BIR COLUMN MASTER KEY TANım DATABASE
VWCT VIEW DEĞIŞIM TAKIBI TABLE, SCHEMA
VWDS VIEW DATABASE EYALET DATABASE

REVOKE ve sütun istisna izinleri

Çoğu durumda, REVOKE komut sys.database_permissions'dan veya GRANT girişini kaldırırDENY.

Ancak, bir nesne üzerinde veya izinler ve GRANT sonra bir sütunda izin olabilir.DENYREVOKE Bu sütun-istisna izni sys.database_permissions'daki REVOKE gibi görünecektir. Aşağıdaki örneği göz önünde bulundurun:

GRANT SELECT ON Person.Person TO [Sales];

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

Bu izinler sys.database_permissions'de bir GRANT (tabloda) ve REVOKE bir (sütunda) olarak görünecektir.

Important

REVOKE , ile DENYfarklıdır, çünkü ana görevli Sales diğer izinler aracılığıyla sütuna erişimi olabilir. İzinleri iptal etmek yerine reddetseydik, Sales sütunun içeriğini göremezdik çünkü DENY her zaman geçer GRANT.

Permissions

Herhangi bir kullanıcı kendi izinlerini görebilir. Diğer kullanıcıların VIEW izinlerini görmek için TANIM, DETAL ANY USERveya herhangi bir kullanıcı izni gereklidir. Kullanıcı tanımlı rolleri görmek için ALTER ANY ROLEveya rolde üyelik (örneğin public) gereklidir.

Katalog görünümlerindeki meta verilerin görünürlüğü, kullanıcının sahip olduğu veya kullanıcıya bazı izinlerin verildiği güvenli hale getirilebilir öğelerle sınırlıdır. Daha fazla bilgi için bkz. meta veri görünürlüğü yapılandırması.

SQL Server 2022 ve üzeri için izinler

VIEW SECURITY DEFINITION Veritabanında izin gerektirir.

Examples

A. Veritabanı sorumlularının tüm izinlerini listeleme

Aşağıdaki sorgu, veritabanı sorumlularına açıkça verilen veya reddedilen izinleri listeler.

Important

Sabit veritabanı rollerinin izinleri sys.database_permissionsiçinde görünmez. Bu nedenle, veritabanı sorumluları burada listelenmeyen ek izinlere sahip olabilir.

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. Veritabanı içindeki şema nesneleri üzerindeki izinleri listeleme

Aşağıdaki sorgu, sys.database_principals ve sys.database_permissionssys.objects ve sys.schemas belirli şema nesnelerine verilen veya reddedilen izinleri listelemek için birleştirir.

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. Belirli bir nesnenin izinlerini listeleme

Tek bir veritabanı nesnesine özgü izinleri sorgulamak için önceki örneği kullanabilirsiniz.

Örneğin, testveritabanı kullanıcısına AdventureWorksDW2025 aşağıdaki ayrıntılı izinleri göz önünde bulundurun:

GRANT SELECT ON dbo.vAssocSeqOrders TO [test];

dbo.vAssocSeqOrdersatanan ayrıntılı izinleri bulun:

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';

Çıktıyı döndürür:

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

Sonraki Adımlar