Поделиться через


sys.database_permissions (Transact-SQL)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure конечной точке аналитики платформы Аналитики Azure Synapse Analytics (PDW) в Microsoft Fabric Хранилище в базе данных Microsoft Fabric SQL в Microsoft Fabric

Возвращает по одной строке для каждого разрешения или разрешения-исключения уровня столбца в базе данных. Для столбцов в представлении каталога содержится по одной строке на каждое разрешение, которое отличается от соответствующего разрешения уровня объекта. Если разрешение столбца совпадает с соответствующим разрешением объекта, строка для нее отсутствует, а разрешение применяется к объекту.

Внимание

Разрешения уровня столбца переопределяют разрешения уровня объекта на ту же сущность.

Имя столбца Тип данных Description
class tinyint Указывает класс, на который существует разрешение. Дополнительные сведения см. в разделе sys.securable_classes (Transact-SQL).

0 = база данных;
1 = объект или столбец
3 = схема
4 = Участник базы данных
5 = сборка — применяется к: SQL Server 2008 (10.0.x) и более поздним версиям.
6 = Тип
10 = коллекция схем XML —
Область применения: SQL Server 2008 (10.0.x) и более поздних версий.
15 = Тип сообщения — применяется к: SQL Server 2008 (10.0.x) и более поздним версиям.
16 = Контракт службы — применяется к: SQL Server 2008 (10.0.x) и более поздним версиям.
17 = Служба — применяется к: SQL Server 2008 (10.0.x) и более поздним версиям.
18 = привязка удаленной службы. Применяется к: SQL Server 2008 (10.0.x) и более поздним версиям.
19 = маршрут — применяется к: SQL Server 2008 (10.0.x) и более поздним версиям.
23 =Полнотекстовый каталог. Применяется к: SQL Server 2008 (10.0.x) и более поздним версиям.
24 = симметричный ключ. Применяется к: SQL Server 2008 (10.0.x) и более поздним версиям.
25 = сертификат — применяется к: SQL Server 2008 (10.0.x) и более поздних версий.
26 = асимметричный ключ. Применяется к: SQL Server 2008 (10.0.x) и более поздним версиям.
29 = Полный список стоп-слов. Применяется к: SQL Server 2008 (10.0.x) и более поздним версиям.
31 = список свойств поиска. Применяется к: SQL Server 2008 (10.0.x) и более поздним версиям.
32 = учетные данные в области базы данных. Применяется к: SQL Server 2016 (13.x) и более поздним версиям.
34 = внешний язык— применяется к: SQL Server 2019 (15.x) и более поздним версиям.
class_desc nvarchar(60) Описание класса, на который существует разрешение.

DATABASE

OBJECT_OR_COLUMN

СХЕМА

DATABASE_PRINCIPAL

ASSEMBLY

ТИП

XML_SCHEMA_COLLECTION

MESSAGE_TYPE

SERVICE_CONTRACT

SERVICE

REMOTE_SERVICE_BINDING

ROUTE

FULLTEXT_CATALOG

SYMMETRIC_KEYS

СЕРТИФИКАТ

ASYMMETRIC_KEY

FULLTEXT STOPLIST

SEARCH PROPERTY LIST

DATABASE SCOPED CREDENTIAL

ВНЕШНИЙ ЯЗЫК
major_id int Идентификатор предмета, на который существует разрешение, интерпретируется в соответствии с классом. Как правило, просто тип идентификатора, major_id который применяется к тому, что представляет класс.

0 = сама база данных

>0 = идентификаторы объектов пользователя

<0 = идентификаторы объектов для системных объектов
minor_id int Вторичный идентификатор предмета, на который существует разрешение, интерпретируется согласно классу. Часто значение равно нулю, minor_id так как для класса объекта отсутствует подкатегория. В противном случае это идентификатор столбца таблицы.
grantee_principal_id int Идентификатор участника базы данных, которому предоставлено разрешение.
grantor_principal_id int Идентификатор участника базы данных, который предоставил данное разрешение.
type char(4) Тип разрешения в базе данных. Список типов разрешений см. в следующей таблице.
permission_name nvarchar(128) Имя разрешения.
state char(1) Состояние разрешения:

D = запретить

R = отменить

G = предоставить

W = параметр Grant With Grant
state_desc nvarchar(60) Описание состояния разрешения:

DENY

REVOKE

GRANT

GRANT_WITH_GRANT_OPTION

Разрешения базы данных

Возможны следующие типы разрешений.

Тип разрешения Имя разрешения Применяется к защищаемому объекту
AADS ALTER ANY DATABASE EVENT SESSION DATABASE
AAMK ALTER ANY MASK DATABASE
AEDS ALTER ANY EXTERNAL DATA SOURCE DATABASE
AEFF ALTER ANY EXTERNAL FILE FORMAT DATABASE
AL ИЗМЕНИТЬ APPLICATION ROLE, ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACT, DATABASE, FULLTEXT CATALOG, MESSAGE TYPE, OBJECT, REMOTE SERVICE BINDING, ROLE, ROUTE, SCHEMA, SERVICE, SYMMETRIC KEY, USER, XML SCHEMA COLLECTION
ALAK ALTER ANY ASYMMETRIC KEY DATABASE
ALAR ALTER ANY APPLICATION ROLE DATABASE
ALAS ALTER ANY ASSEMBLY DATABASE
ALCF ALTER ANY CERTIFICATE DATABASE
ALDS ALTER ANY DATASPACE DATABASE
ALED ALTER ANY DATABASE EVENT NOTIFICATION DATABASE
ALFT ALTER ANY FULLTEXT CATALOG DATABASE
ALMT ALTER ANY MESSAGE TYPE DATABASE
ALRL ALTER ANY ROLE DATABASE
ALRT ALTER ANY ROUTE DATABASE
ALSB ALTER ANY REMOTE SERVICE BINDING DATABASE
ALSC ALTER ANY CONTRACT DATABASE
ALSK ALTER ANY SYMMETRIC KEY DATABASE
ALSM ALTER ANY SCHEMA DATABASE
ALSV ALTER ANY SERVICE DATABASE
ALTG ALTER ANY DATABASE DDL TRIGGER DATABASE
ALUS ИЗМЕНИТЬ ПОЛЬЗОВАТЕЛЯ DATABASE
АУТЕНТИФИКАЦИЯ AUTHENTICATE DATABASE
BADB BACKUP DATABASE DATABASE
BALO BACKUP LOG DATABASE
CL ПРОИЗВОДИТЕЛЬНОСТИ APPLICATION ROLE, ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACT, DATABASE, FULLTEXT CATALOG, MESSAGE TYPE, OBJECT, REMOTE SERVICE BINDING, ROLE, ROUTE, SCHEMA, SERVICE, SYMMETRIC KEY, TYPE, USER, XML SCHEMA COLLECTION
CO ПОДКЛЮЧЕНИЕ DATABASE
CORP CONNECT REPLICATION DATABASE
CP CHECKPOINT DATABASE
CRAG CREATE AGGREGATE DATABASE
CRAK CREATE ASYMMETRIC KEY DATABASE
CRAS CREATE ASSEMBLY DATABASE
CRCF CREATE CERTIFICATE DATABASE
CRDB СОЗДАТЬ БАЗУ ДАННЫХ 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 СОЗДАТЬ ПРОЦЕДУРУ 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 Применимо: SQL Server 2012 (11.x) и более поздних версий.

CREATE SEQUENCE
DATABASE
CRSV CREATE SERVICE DATABASE
CRTB СОЗДАТЬ ТАБЛИЦУ DATABASE
CRTY СОЗДАТЬ ТИП DATABASE
CRVW СОЗДАТЬ ПРЕДСТАВЛЕНИЕ DATABASE
CRXS Область применения: SQL Server 2008 (10.0.x) и более поздних версий.

CREATE XML SCHEMA COLLECTION
DATABASE
DABO ADMINISTER DATABASE BULK OPERATIONS DATABASE
DL DELETE DATABASE, OBJECT, SCHEMA
EAES EXECUTE ANY EXTERNAL SCRIPT DATABASE
EX ВЫПОЛНИТЬ ASSEMBLY, DATABASE, OBJECT, SCHEMA, TYPE, XML SCHEMA COLLECTION
"IM" (Обмен мгновенными сообщениями); IMPERSONATE Пользователь
В ВСТАВИТЬ DATABASE, OBJECT, SCHEMA
Ролевой центр ПРИЕМ OBJECT
RF ССЫЛКИ ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACT, DATABASE, FULLTEXT CATALOG, MESSAGE TYPE, OBJECT, SCHEMA, SYMMETRIC KEY, TYPE, XML SCHEMA COLLECTION
SL SELECT DATABASE, OBJECT, SCHEMA
SN SEND SERVICE
SPLN SHOWPLAN DATABASE
SUQN SUBSCRIBE QUERY NOTIFICATIONS DATABASE
TO TAKE OWNERSHIP ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACT, DATABASE, FULLTEXT CATALOG, MESSAGE TYPE, OBJECT, REMOTE SERVICE BINDING, ROLE, ROUTE, SCHEMA, SERVICE, SYMMETRIC KEY, TYPE, XML SCHEMA COLLECTION
UP UPDATE DATABASE, OBJECT, SCHEMA
VW VIEW DEFINITION APPLICATION ROLE, ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACT, DATABASE, FULLTEXT CATALOG, MESSAGE TYPE, OBJECT, REMOTE SERVICE BINDING, ROLE, ROUTE, SCHEMA, SERVICE, SYMMETRIC KEY, TYPE, USER, XML SCHEMA COLLECTION
VWCK VIEW ANY COLUMN ENCRYPTION KEY DEFINITION DATABASE
VWCM VIEW ANY COLUMN MASTER KEY DEFINITION DATABASE
VWCT VIEW CHANGE TRACKING TABLE, SCHEMA
VWDS ПРОСМОТР СОСТОЯНИЯ БАЗЫ ДАННЫХ DATABASE

Разрешения

Любой пользователь может видеть свои собственные разрешения. Для просмотра разрешений для другого пользователя необходимо иметь разрешение VIEW DEFINITION или ALTER ANY USER либо любое разрешение на доступ к данным пользователя. Для просмотра определяемых пользователем ролей необходимо иметь разрешение ALTER ANY ROLE или быть членом роли (например, public).

Видимость метаданных в представлениях каталога ограничена защищаемыми объектами, которыми владеет пользователь или которым пользователь получил некоторое разрешение. Дополнительные сведения см. в разделе Metadata Visibility Configuration.

Примеры

А. Список всех разрешений субъектов базы данных

Следующий запрос перечисляет разрешения, явно предоставленные или отклоненные для участников базы данных.

Внимание

Разрешения фиксированных ролей базы данных не отображаются 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  
INNER 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
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;

В. Вывод списка разрешений для определенного объекта

Предыдущий пример можно использовать для запроса разрешений, относящихся к одному объекту базы данных.

Например, рассмотрим следующие детализированные разрешения, предоставленные пользователю test базы данных в примере базы данныхAdventureWorksDW2022:

GRANT SELECT ON dbo.vAssocSeqOrders TO [test];

Найдите детализированные разрешения, назначенные 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 o.name = 'vAssocSeqOrders'
    AND s.name = 'dbo';

Возвращает выходные данные:

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

См. также

Следующие шаги