sys.database_principals (Transact-SQL)
Возвращает по одной строке для каждого субъекта безопасности в базе данных.
Имя столбца |
Тип данных |
Описание |
||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
name |
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 |
Обозначает тип проверки подлинности.
Не относится к SQL Azure. |
||||||||||
authentication_type_desc |
nvarchar(60) |
Описание типа проверки подлинности.
Не относится к SQL Azure. |
||||||||||
default_language_name |
sysname |
Обозначает язык по умолчанию для участника. Не относится к SQL Azure. |
||||||||||
default_language_lcid |
int |
Обозначает код языка по умолчанию для участника. Не относится к SQL Azure. |
Замечания
Свойства 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;
См. также
Справочник
Представления каталога (Transact-SQL)
Представления каталога безопасности (Transact-SQL)