sys.database_permissions (Transact-SQL)
Возвращает по одной строке для каждого разрешения или разрешения-исключения уровня столбца в базе данных. Для столбцов в представлении каталога содержится по одной строке на каждое разрешение, которое отличается от соответствующего разрешения уровня объекта. Если столбец имеет то же разрешение, что и соответствующий объект, строка для него отсутствует, и к этому столбцу применяется разрешение на объект.
Важно! |
---|
Разрешения уровня столбца переопределяют разрешения уровня объекта на ту же сущность. |
Применимо для следующих объектов: SQL Server (SQL Server 2008 по текущую версию), База данных SQL Windows Azure (С первоначального выпуска по текущий выпуск). |
Имя столбца |
Тип данных |
Описание |
||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
класс |
tinyint |
Указывает класс, на который существует разрешение.
|
||||||||||||||||||||||||||||||||
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_KEY CERTIFICATE ASYMMETRIC_KEY |
||||||||||||||||||||||||||||||||
major_id |
int |
Идентификатор предмета, на который существует разрешение, интерпретируется в соответствии с классом. В большинстве случаев это просто вид идентификатора, который определяет, что именно представляет собой класс. Нестандартные идентификаторы интерпретируются следующим образом: 0 = Всегда 0 1 = Object-ID Отрицательные идентификаторы назначаются системным объектам. |
||||||||||||||||||||||||||||||||
minor_id |
int |
Вторичный идентификатор предмета, на который существует разрешение, интерпретируется согласно классу. В большинстве случаев равен нулю. Может принимать следующие значения: 1 = Идентификатор столбца (для столбцов). В противном случае — 0 (для объектов). |
||||||||||||||||||||||||||||||||
grantee_principal_id |
int |
Идентификатор участника базы данных, которому предоставлено разрешение. |
||||||||||||||||||||||||||||||||
grantor_principal_id |
int |
Идентификатор участника базы данных, который предоставил данное разрешение. |
||||||||||||||||||||||||||||||||
тип |
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 |
Тип разрешения |
Имя разрешения |
Применяется к защищаемому объекту |
|
---|---|---|---|
AL |
ALTER |
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 |
ALTER ANY USER |
DATABASE |
|
AUTH |
AUTHENTICATE |
DATABASE |
|
BADB |
BACKUP DATABASE |
DATABASE |
|
BALO |
BACKUP LOG |
DATABASE |
|
CL |
CONTROL |
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 |
CONNECT |
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 |
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 |
CREATE SEQUENCE
|
DATABASE |
|
CRSV |
CREATE SERVICE |
DATABASE |
|
CRTB |
CREATE TABLE |
DATABASE |
|
CRTY |
CREATE TYPE |
DATABASE |
|
CRVW |
CREATE VIEW |
DATABASE |
|
CRXS |
CREATE XML SCHEMA COLLECTION
|
DATABASE |
|
DL |
DELETE |
DATABASE, OBJECT, SCHEMA |
|
EX |
EXECUTE |
ASSEMBLY, DATABASE, OBJECT, SCHEMA, TYPE, XML SCHEMA COLLECTION |
|
IM |
IMPERSONATE |
USER |
|
IN |
INSERT |
DATABASE, OBJECT, SCHEMA |
|
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 |
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 |
|
VWCT |
VIEW CHANGE TRACKING |
TABLE, SCHEMA |
|
VWDS |
VIEW DATABASE STATE |
DATABASE |
Разрешения
Любой пользователь может видеть свои собственные разрешения. Для просмотра разрешений для другого пользователя необходимо иметь разрешение VIEW DEFINITION или ALTER ANY USER либо любое разрешение на доступ к данным пользователя. Для просмотра определяемых пользователем ролей необходимо иметь разрешение ALTER ANY ROLE или быть членом роли (например, public).
Видимость метаданных в представлениях каталогов ограничивается защищаемыми объектами, которыми пользователь владеет или на которые ему были предоставлены разрешения. Дополнительные сведения см. в разделе Настройка видимости метаданных.
Примеры
А. Перечисление всех разрешений участников базы данных
Следующий запрос перечисляет разрешения, явно предоставленные или отклоненные для участников базы данных.
Важно! |
---|
Разрешения предопределенных ролей базы данных не отображаются в 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
JOIN sys.database_permissions AS pe
ON pe.grantee_principal_id = pr.principal_id;
Б. Перечисление разрешений для объектов схемы в базе данных
Следующий запрос объединяет 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
JOIN sys.database_permissions AS pe
ON pe.grantee_principal_id = pr.principal_id
JOIN sys.objects AS o
ON pe.major_id = o.object_id
JOIN sys.schemas AS s
ON o.schema_id = s.schema_id;
См. также
Справочник
Представления каталога безопасности (Transact-SQL)
Представления каталога (Transact-SQL)