Partilhar via


sys.database_principals (Transact-SQL)

Aplica-se a:SQL ServerBase de Dados SQL do AzureInstância Gerida do Azure SQLAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)Ponto de Extremidade de Análise SQL no Microsoft FabricArmazém no Microsoft FabricBase de Dados SQL no Microsoft Fabric

Retorna uma linha para cada entidade de segurança em um banco de dados do SQL Server.

Note

O Microsoft Entra ID era conhecido anteriormente como Azure Ative Directory (Azure AD).

Descrições das colunas

Nome da coluna Tipo de dados Description
name sysname Nome do principal, exclusivo dentro do banco de dados.
principal_id int ID do principal, exclusivo dentro do banco de dados.
type char(1) Tipo principal:

A = Função do aplicativo

C = Usuário mapeado para um certificado

E = Usuário externo do Microsoft Entra ID

G = grupo Windows

K = Usuário mapeado para uma chave assimétrica

R = Função de banco de dados

S = usuário SQL

U = usuário do Windows

X = Grupo externo do grupo ou aplicativos do Microsoft Entra
type_desc nvarchar(60) Descrição do tipo principal.

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 Nome a ser usado quando o nome SQL não especifica um esquema. Nulo para entidades que não sejam do tipo S, U ou A.
create_date datetime Momento em que o principal foi criado.
modify_date datetime Momento em que o comitente foi modificado pela última vez.
owning_principal_id int ID da entidade de segurança proprietária dessa entidade de segurança. Todas as funções de banco de dados fixas são de propriedade do dbo por padrão.
SID varbinary(85) SID (Identificador de Segurança) da entidade de segurança. NULL para esquemas SYS e INFORMATION.
is_fixed_role bit Se 1, essa linha representa uma entrada para uma das funções fixas do banco de dados: db_owner, db_accessadmin, db_datareader, db_datawriter, db_ddladmin, db_securityadmin, db_backupoperator, db_denydatareader db_denydatawriter.
authentication_type int Aplica-se a: SQL Server 2012 (11.x) e posterior.

Significa o tipo de autenticação. A seguir estão os valores possíveis e suas descrições.

0 : Sem autenticação
1 : Autenticação da instância
2 : Autenticação de banco de dados
3 : Autenticação do Windows
4 : Autenticação Microsoft Entra
authentication_type_desc nvarchar(60) Aplica-se a: SQL Server 2012 (11.x) e posterior.

Descrição do tipo de autenticação. A seguir estão os valores possíveis e suas descrições.

NONE : Sem autenticação
INSTANCE : Autenticação de instância
DATABASE : Autenticação de banco de dados
WINDOWS : Autenticação do Windows
EXTERNAL: Autenticação Microsoft Entra
default_language_name sysname Aplica-se a: SQL Server 2012 (11.x) e posterior.

Significa o idioma padrão para essa entidade de segurança.
default_language_lcid int Aplica-se a: SQL Server 2012 (11.x) e posterior.

Significa o LCID padrão para essa entidade de segurança.
allow_encrypted_value_modifications bit Aplica-se a: SQL Server 2016 (13.x) e posterior, Banco de dados SQL.

Suprime verificações de metadados criptográficos no servidor em operações de cópia em massa. Isso permite que o usuário copie em massa dados criptografados usando Always Encrypted, entre tabelas ou bancos de dados, sem descriptografar os dados. O padrão é OFF.

Remarks

As propriedades PasswordLastSetTime estão disponíveis em todas as configurações com suporte do SQL Server, mas as outras propriedades só estão disponíveis quando o SQL Server está sendo executado no Windows Server 2003 ou posterior e CHECK_POLICY e CHECK_EXPIRATION estão habilitados. Consulte Política de senha para obter mais informações. Os valores do principal_id podem ser reutilizados no caso de os principais terem sido reduzidos e, portanto, não é garantido que sejam cada vez maiores.

Permissions

Qualquer usuário pode ver seu próprio nome de usuário, os usuários do sistema e as funções de banco de dados fixas. Para ver outros usuários, requer ALTER ANY USER, ou uma permissão sobre o usuário. Para ver as funções definidas pelo usuário, é necessário ALTERAR QUALQUER FUNÇÃO ou associação à função.

Examples

R: Listando todas as permissões das entidades de banco de dados

A consulta a seguir lista as permissões explicitamente concedidas ou negadas às entidades de banco de dados.

Important

As permissões de funções de banco de dados fixas não aparecem no sys.database_permissions. Portanto, as entidades de banco de dados podem ter permissões adicionais não listadas aqui.

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: Listando permissões em objetos de esquema em um banco de dados

A consulta a seguir une sys.database_principals e sys.database_permissions a sys.objects e sys.schemas para listar permissões concedidas ou negadas a objetos de esquema específicos.

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;  

Exemplos: Azure Synapse Analytics and Analytics Platform System (PDW)

C: Listando todas as permissões de entidades de banco de dados

A consulta a seguir lista as permissões explicitamente concedidas ou negadas às entidades de banco de dados.

Important

As permissões de funções de banco de dados fixas não aparecem no sys.database_permissions. Portanto, as entidades de banco de dados podem ter permissões adicionais não listadas aqui.

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: Listando permissões em objetos de esquema em um banco de dados

A consulta a seguir une sys.database_principals e sys.database_permissions para sys.objects e sys.schemas para listar permissões concedidas ou negadas a objetos de esquema específicos.

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;  

Ver também

Principais (Motor de Base de Dados)
sys.server_principals (Transact-SQL)
Visualizações do catálogo de segurança (Transact-SQL)
Contained Database Users - Making Your Database Portable (Utilizadores de Base de Dados Contida - Tornar a Sua Base de Dados Portátil)
Conectando-se ao SQL do Azure com a autenticação do Microsoft Entra