Поделиться через


sys.database_principals (Transact-SQL)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure конечной точке аналитики платформы Аналитики Azure Synapse Analytics (PDW) в Microsoft Fabric Хранилище в базе данных Microsoft Fabric SQL в Microsoft Fabric

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

Примечание.

Идентификатор Microsoft Entra ранее был известен как Azure Active Directory (Azure AD).

Описания столбцов

Имя столбца Тип данных Description
name sysname Имя участника, уникальное в пределах базы данных.
principal_id int Идентификатор участника, уникальный в пределах базы данных.
type char(1) Тип участника:

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

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

E = внешний пользователь из идентификатора Microsoft Entra

G = группа Windows

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

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

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

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

X = внешняя группа из группы или приложений Microsoft Entra
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 по умолчанию.
ид безопасности 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. Проверка подлинности Microsoft Entra
authentication_type_desc nvarchar(60) Область применения: SQL Server 2012 (11.x) и более поздних версий.

Описание типа проверки подлинности. Ниже приведены возможные значения и их описания.

NONE : проверка подлинности отсутствует
INSTANCE : проверка подлинности экземпляра
DATABASE : проверка подлинности базы данных
WINDOWS: проверка подлинности Windows
EXTERNAL: проверка подлинности Microsoft Entra
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;  

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  
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;  

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

Следующие запросы присоединяются 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;  

См. также

Субъекты (ядро СУБД)
sys.server_principals (Transact-SQL)
Представления каталога безопасности (Transact-SQL)
Пользователи автономной базы данных: создание переносимой базы данных
Подключение к SQL Azure с помощью проверки подлинности Microsoft Entra