sys.database_permissions (Transact-SQL)
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure конечной точке аналитики платформы Аналитики Azure Synapse Analytics (PDW) в Microsoft Fabric Хранилище в 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 СЛУЖБА 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 | СЛУЖБА |
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;
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
См. также
- Защищаемые объекты
- Иерархия разрешений (ядро СУБД)
- Представления каталога безопасности (Transact-SQL)
- Представления каталога (Transact-SQL)