sys.database_principals вывод списка ролей

Административные скрипты MS SQL > sys.database_principals вывод списка ролей
23.04.2018 16:38:55



Статья:

sys.database_principals

Возвращает по одной строке для каждого субъекта безопасности в базе данных SQL Server.

Имя столбца

Тип данных

Описание

имя

sysname

Имя участника, уникальное в пределах базы данных.

principal_id

int

Идентификатор участника, уникальный в пределах базы данных.

тип

char(1)

Тип участника:

S = пользователь SQL

U = пользователь Windows

G = группа Windows

A = роль приложения

R = роль базы данных

C = пользователь сопоставлен с сертификатом

K = пользователь сопоставлен с асимметричным ключом

type_desc

nvarchar(60)

Описание типа участника.

SQL_USER

WINDOWS_USER

WINDOWS_GROUP

APPLICATION_ROLE

DATABASE_ROLE

CERTIFICATE_MAPPED_USER

ASYMMETRIC_KEY_MAPPED_USER

default_schema_name

sysname

Имя, используемое в случае, когда схема не определяется именем SQL. NULL для участников с типами, отличными от S, U или A.

create_date

datetime

Время создания участника.

modify_date

datetime

Время последнего изменения участника.

owning_principal_id

int

Идентификатор участника, являющегося владельцем данного участника. Владельцем всех участников, кроме ролей баз данных, должен быть объект dbo.

sid

varbinary(85)

SID (идентификатор защиты) участника. NULL для SYS и INFORMATION SCHEMAS.

is_fixed_role

bit

Если значение равно 1, в данной строке представляется запись для одной из предопределенных ролей базы данных: db_owner, db_accessadmin, db_datareader, db_datawriter, db_ddladmin, db_securityadmin, db_backupoperator, db_denydatareader, db_denydatawriter.

authentication_type

int

Обозначает тип проверки подлинности.

Значение

Описание

0

Без проверки подлинности

1

Проверка подлинности экземпляра

2

Проверки подлинности базы данных

3

Проверка подлинности Windows

Применимо для следующих объектов: С SQL Server 2012 по SQL Server 2014 включительно.

authentication_type_desc

nvarchar(60)

Описание типа проверки подлинности.

Значение

Описание

NONE

Без проверки подлинности

INSTANCE

Проверка подлинности экземпляра

DATABASE

Проверки подлинности базы данных

WINDOWS

Проверка подлинности Windows

Применимо для следующих объектов: С SQL Server 2012 по SQL Server 2014 включительно.

default_language_name

sysname

Обозначает язык по умолчанию для участника.

Применимо для следующих объектов: С SQL Server 2012 по SQL Server 2014 включительно.

default_language_lcid

int

Обозначает код языка по умолчанию для участника.

Применимо для следующих объектов: С SQL Server 2012 по SQL Server 2014 включительно.

Свойства PasswordLastSetTime доступны во всех поддерживаемых конфигурациях SQL Server, но прочие свойства доступны только в случае, когда SQL Server работает под управлением Windows Server 2003 при включенных параметрах CHECK_POLICY и CHECK_EXPIRATION.Дополнительные сведения см. в разделе Политика паролей.

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

А. Перечисление всех разрешений участников базы данных

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

Важное примечание Важно!

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