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


sys.database_permissions (Transact-SQL)

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

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

Important

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

Column name Data type 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

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

СПИСОК ДЛЯ ПОИСКА НЕДВИЖИМОСТИ

УЧЕТНЫЕ ДАННЫЕ В ПРЕДЕЛАХ БАЗЫ ДАННЫХ

EXTERNAL LANGUAGE
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) Permission name.
state char(1) Permission state:

D = запретить

R = отменить

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

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

DENY

REVOKE

GRANT

GRANT_WITH_GRANT_OPTION

Database Permissions

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

Permission type Permission name Применяется к защищаемому объекту
AADS ИЗМЕНИТЬ ЛЮБОЙ СЕССИЮ СОБЫТИЯ БАЗЫ ДАННЫХ DATABASE
AAMK ИЗМЕНИТЬ ЛЮБУЮ МАСКУ DATABASE
AEDS ИЗМЕНЕНИЕ ЛЮБОГО ВНЕШНЕГО ИСТОЧНИКА ДАННЫХ DATABASE
AEFF ИЗМЕНИТЬ ЛЮБОЙ ВНЕШНИЙ ФОРМАТ ФАЙЛА DATABASE
AL ALTER РОЛЬ ПРИЛОЖЕНИЯ, СБОРКА, АСИММЕТРИЧНЫЙ КЛЮЧ, СЕРТИФИКАТ, КОНТРАКТ, БАЗА ДАННЫХ, ПОЛНОТЕКСТОВЫЙ КАТАЛОГ, ТИП СООБЩЕНИЯ, ОБЪЕКТ, УДАЛЕННАЯ ПРИВЯЗКА СЛУЖБЫ, РОЛЬ, МАРШРУТ, СХЕМА, СЛУЖБА, СИММЕТРИЧНЫЙ КЛЮЧ, ПОЛЬЗОВАТЕЛЬ, КОЛЛЕКЦИЯ СХЕМ XML
ALAK Изменить любой асимметричный ключ DATABASE
ALAR ИЗМЕНИТЬ ЛЮБУЮ РОЛЬ ПРИЛОЖЕНИЯ DATABASE
ALAS ИЗМЕНИТЬ ЛЮБУЮ СБОРКУ DATABASE
ALCF ИЗМЕНИТЬ ЛЮБОЙ СЕРТИФИКАТ DATABASE
ALDS ИЗМЕНИТЬ ЛЮБОЕ ПРОСТРАНСТВО ДАННЫХ DATABASE
ALED Изменение любых уведомлений о событиях базы данных (ALTER ANY DATABASE EVENT NOTIFICATION) DATABASE
ALFT ИЗМЕНИТЬ ЛЮБОЙ ПОЛНОТЕКСТОВЫЙ КАТАЛОГ DATABASE
ALMT ИЗМЕНЯТЬ ЛЮБОЙ ТИП СООБЩЕНИЯ DATABASE
ALRL ИЗМЕНИТЬ ЛЮБУЮ РОЛЬ DATABASE
ALRT ИЗМЕНИТЬ ЛЮБОЙ МАРШРУТ DATABASE
ALSB ИЗМЕНИТЬ ЛЮБУЮ УДАЛЕННУЮ СВЯЗЬ СЕРВИСА DATABASE
ALSC ИЗМЕНЯТЬ ЛЮБОЙ КОНТРАКТ DATABASE
ALSK ИЗМЕНИТЬ ЛЮБОЙ СИММЕТРИЧНЫЙ КЛЮЧ DATABASE
ALSM ИЗМЕНИТЬ ЛЮБУЮ СХЕМУ DATABASE
ALSV ИЗМЕНЕНИЕ ЛЮБОЙ СЛУЖБЫ DATABASE
ALTG ИЗМЕНИТЬ ЛЮБОЙ ТРИГГЕР DDL БАЗЫ ДАННЫХ DATABASE
ALUS ИЗМЕНИТЬ ПОЛЬЗОВАТЕЛЯ DATABASE
AUTH AUTHENTICATE DATABASE
BADB BACKUP DATABASE DATABASE
BALO BACKUP LOG DATABASE
CL CONTROL РОЛЬ ПРИЛОЖЕНИЯ, СБОРКА, АСИММЕТРИЧНЫЙ КЛЮЧ, СЕРТИФИКАТ, КОНТРАКТ, БАЗА ДАННЫХ, ПОЛНОТЕКСТОВЫЙ КАТАЛОГ, ТИП СООБЩЕНИЯ, ОБЪЕКТ, УДАЛЕННАЯ ПРИВЯЗКА СЛУЖБЫ, РОЛЬ, МАРШРУТ, СХЕМА, СЛУЖБА, СИММЕТРИЧНЫЙ КЛЮЧ, ТИП, ПОЛЬЗОВАТЕЛЬ, КОЛЛЕКЦИЯ СХЕМ XML
CO CONNECT DATABASE
CORP CONNECT REPLICATION DATABASE
CP CHECKPOINT DATABASE
CRAG CREATE AGGREGATE DATABASE
CRAK СОЗДАНИЕ АСИММЕТРИЧНОГО КЛЮЧА DATABASE
CRAS CREATE ASSEMBLY DATABASE
CRCF CREATE CERTIFICATE DATABASE
CRDB CREATE DATABASE DATABASE
CRDF CREATE DEFAULT DATABASE
CRED СОЗДАНИЕ УВЕДОМЛЕНИЯ О СОБЫТИЯХ БАЗЫ ДАННЫХ DDL DATABASE
CRFN CREATE FUNCTION DATABASE
CRFT СОЗДАНИЕ КАТАЛОГА FULLTEXT DATABASE
CRMT СОЗДАТЬ ТИП СООБЩЕНИЯ DATABASE
CRPR CREATE PROCEDURE DATABASE
CRQU CREATE QUEUE DATABASE
CRRL CREATE ROLE DATABASE
CRRT CREATE ROUTE DATABASE
CRRU CREATE RULE DATABASE
CRSB СОЗДАНИЕ ПРИВЯЗКИ К УДАЛЕННОЙ СЛУЖБЕ DATABASE
CRSC CREATE CONTRACT DATABASE
CRSK СОЗДАНИЕ СИММЕТРИЧНОГО КЛЮЧА DATABASE
CRSM CREATE SCHEMA DATABASE
CRSN CREATE SYNONYM DATABASE
CRSO Применимо: SQL Server 2012 (11.x) и более поздних версий.

CREATE SEQUENCE
DATABASE
CRSV CREATE SERVICE DATABASE
CRTB CREATE TABLE DATABASE
CRTY CREATE TYPE DATABASE
CRVW CREATE VIEW DATABASE
CRXS Область применения: SQL Server 2008 (10.0.x) и более поздних версий.

СОЗДАТЬ КОЛЛЕКЦИЮ XML-СХЕМ
DATABASE
DABO УПРАВЛЕНИЕ МАССОВЫМИ ОПЕРАЦИЯМИ С БАЗОЙ ДАННЫХ DATABASE
DL DELETE БАЗА ДАННЫХ, ОБЪЕКТ, СХЕМА
EAES ВЫПОЛНИТЬ ЛЮБОЙ ВНЕШНИЙ СКРИПТ DATABASE
EX EXECUTE ASSEMBLY, DATABASE, OBJECT, SCHEMA, TYPE, XML SCHEMA COLLECTION
IM IMPERSONATE USER
IN INSERT БАЗА ДАННЫХ, ОБЪЕКТ, СХЕМА
RC RECEIVE OBJECT
RF REFERENCES ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACT, DATABASE, FULLTEXT CATALOG, MESSAGE TYPE, OBJECT, SCHEMA, SYMMETRIC KEY, TYPE, XML SCHEMA COLLECTION
SL SELECT БАЗА ДАННЫХ, ОБЪЕКТ, СХЕМА
SN SEND SERVICE
SPLN SHOWPLAN DATABASE
SUQN УВЕДОМЛЕНИЯ О ЗАПРОСЕ НА ПОДПИСКУ 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 БАЗА ДАННЫХ, ОБЪЕКТ, СХЕМА
VW VIEW DEFINITION РОЛЬ ПРИЛОЖЕНИЯ, СБОРКА, АСИММЕТРИЧНЫЙ КЛЮЧ, СЕРТИФИКАТ, КОНТРАКТ, БАЗА ДАННЫХ, ПОЛНОТЕКСТОВЫЙ КАТАЛОГ, ТИП СООБЩЕНИЯ, ОБЪЕКТ, УДАЛЕННАЯ ПРИВЯЗКА СЛУЖБЫ, РОЛЬ, МАРШРУТ, СХЕМА, СЛУЖБА, СИММЕТРИЧНЫЙ КЛЮЧ, ТИП, ПОЛЬЗОВАТЕЛЬ, КОЛЛЕКЦИЯ СХЕМ XML
VWCK ПРОСМОТР ОПРЕДЕЛЕНИЯ КЛЮЧА ШИФРОВАНИЯ СТОЛБЦА DATABASE
VWCM ПРОСМОТР ОПРЕДЕЛЕНИЯ ГЛАВНОГО КЛЮЧА СТОЛБЦА DATABASE
VWCT ПРОСМОТР ИЗМЕНЕНИЙ TABLE, SCHEMA
VWDS ПРОСМОТР СОСТОЯНИЯ БАЗЫ ДАННЫХ DATABASE

РАЗРЕШЕНИЯ НА ОТМЕНУ и исключение столбцов

В большинстве случаев команда REVOKE удаляет запись GRANT или DENY из sys.database_permissions.

Однако разрешения GRANT или DENY для объекта можно ПРЕДОСТАВИТЬ или ЗАПРЕТить, а затем ОТМЕНИТЬ это разрешение для столбца. Это разрешение на исключение столбцов будет отображаться как REVOKE в sys.database_permissions. Рассмотрим следующий пример:

GRANT SELECT ON Person.Person TO [Sales];

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

Эти разрешения будут отображаться в sys.database_permissions в виде одного GRANT (в таблице) и одного ОТЗЫВА (в столбце).

Important

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

Permissions

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

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

Examples

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

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

Important

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

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

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

Например, рассмотрим следующие детализированные разрешения, предоставленные пользователю 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

See also

Next steps