sys.database_principals (Transact-SQL)
Применимо к: SQL Server Azure SQL Database
Управляемый экземпляр SQL Azure
Azure Synapse Analytics Analytics
Platform System (PDW)
Возвращает по строке для каждого субъекта безопасности в базе данных SQL Server.
Имя столбца | Тип данных | Описание |
---|---|---|
name | sysname | Имя участника, уникальное в пределах базы данных. |
principal_id | int | Идентификатор участника, уникальный в пределах базы данных. |
type | char(1) | Тип участника: A = роль приложения C = пользователь сопоставлен с сертификатом E = внешний пользователь из Azure Active Directory G = группа Windows K = пользователь сопоставлен с асимметричным ключом R = роль базы данных S = пользователь SQL U = пользователь Windows X = внешняя группа из группы или приложений Azure Active Directory |
type_desc | nvarchar(60) | Описание типа участника. APPLICATION_ROLE CERTIFICATE_MAPPED_USER EXTERNAL_USER WINDOWS_GROUP ASYMMETRIC_KEY_MAPPED_USER DATABASE_ROLE SQL_USER WINDOWS_USER EXTERNAL_GROUPS |
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 Server 2012 (11.x) и более поздних версий. Обозначает тип проверки подлинности. Ниже приведены возможные значения и их описания. 0 : проверка подлинности отсутствует 1: проверка подлинности экземпляра 2. Проверка подлинности базы данных 3 : проверка подлинности Windows 4: проверка подлинности Azure Active Directory |
authentication_type_desc | nvarchar(60) | Область применения: SQL Server 2012 (11.x) и более поздних версий. Описание типа проверки подлинности. Ниже приведены возможные значения и их описания. NONE : проверка подлинности отсутствует.INSTANCE : проверка подлинности экземпляраDATABASE : проверка подлинности базы данныхWINDOWS : проверка подлинности WindowsEXTERNAL : проверка подлинности Azure Active Directory |
default_language_name | sysname | Область применения: SQL Server 2012 (11.x) и более поздних версий. Обозначает язык по умолчанию для участника. |
default_language_lcid | int | Область применения: SQL Server 2012 (11.x) и более поздних версий. Обозначает код языка по умолчанию для участника. |
allow_encrypted_value_modifications | bit | Применимо к: SQL Server 2016 (13.x); и выше, База данных SQL. Отключает проверки шифрованных метаданных на сервере в операциях массового копирования. Это позволяет пользователю выполнять массовое копирование данных, зашифрованных с помощью Always Encrypted, между таблицами или базами данных без расшифровки данных. Значение по умолчанию — OFF. |
Комментарии
Свойства PasswordLastSetTime доступны во всех поддерживаемых конфигурациях SQL Server, но другие свойства доступны только в том случае, если SQL Server работает в Windows Server 2003 или более поздней версии и включены как CHECK_POLICY, так и CHECK_EXPIRATION. Дополнительные сведения см. в разделе Политика паролей . Значения principal_id могут использоваться повторно в случае, если субъекты были удалены и, следовательно, не будут постоянно увеличиваться.
Разрешения
Любой пользователь может видеть собственное имя пользователя, пользователей системы и предопределенные роли базы данных. Для просмотра данных других пользователей требуется разрешение 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;
Примеры: Azure Synapse Analytics и Система платформы аналитики (PDW)
C. Перечисление всех разрешений субъектов базы данных
Следующий запрос перечисляет разрешения, явно предоставленные или отклоненные для участников базы данных.
Важно!
Разрешения предопределенных ролей базы данных не отображаются в 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;
См. также:
Субъекты (компонент Database Engine)
sys.server_principals (Transact-SQL)
Представления каталога безопасности (Transact-SQL)
Пользователи автономной базы данных: создание переносимой базы данных
Подключение к базе данных SQL с использованием аутентификации Azure Active Directory