Partilhar via


sys.database_principals (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics Analytics Platform System (PDW) Ponto de extremidade de análise de SQL no Microsoft Fabric Warehouse no Microsoft Fabric Banco de Dados SQL no Microsoft Fabric

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

Observação

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

Descrições de colunas

Nome da coluna Tipo de dados Descrição
name sysname Nome da entidade de segurança, exclusivo no banco de dados.
principal_id int ID da entidade de segurança, exclusiva no banco de dados.
tipo char(1) Tipo do principal:

A = Função de aplicativo

C = Usuário mapeado para um certificado

E = Usuário externo da ID do Microsoft Entra

G = Grupo do Windows

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

R = Função de banco de dados

S = Usuário do SQL

U = Usuário do Windows

X = Grupo externo do grupo ou aplicativos do Microsoft Entra
type_desc nvarchar(60) Descrição do tipo de 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 especificar um esquema. Nulo para principais que não sejam do tipo S, U ou A.
create_date datetime Hora em que o principal foi criado.
modify_date datetime Hora em que a entidade de segurança foi modificada pela última vez.
owning_principal_id int ID da entidade de segurança que é proprietária desta entidade de segurança. Todas as funções de banco de dados fixas pertencem ao dbo por padrão.
sid varbinary(85) SID (ID de segurança) da entidade de segurança. NULL for SYS e INFORMATION SCHEMAS.
is_fixed_role bit Se 1, essa linha representará uma entrada para uma das funções de banco de dados fixa: 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 um tipo de autenticação. Confira a seguir os valores possíveis e suas descrições.

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

Descrição do tipo de autenticação. Confira a seguir 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 do Microsoft Entra
default_language_name sysname Aplica-se a: SQL Server 2012 (11.x) e posterior.

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

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

Suprime as 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 os dados criptografados usando o Always Encrypted, entre tabelas ou bancos de dados, sem descriptografar os dados. O padrão é OFF.

Comentários

Os valores das propriedades do PasswordLastSetTime estão disponíveis em todas as configurações com suporte do SQL Server, porém outras estarão disponíveis apenas se o SQL Server for executado no Windows Server 2003 ou superior e tanto o CHECK_POLICY como o CHECK_EXPIRATION estiverem habilitados. Para obter mais informações, consulte Política de senha. Os valores do principal_id podem ser reutilizados no caso de as entidades de segurança terem sido descartadas e, portanto, não há garantia de que sejam cada vez maiores.

Permissões

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. Ver outros usuários requer ALTER ANY USER ou uma permissão no usuário. Ver funções definidas pelo usuário requer ALTER ANY ROLE ou associação na função.

Exemplos

A: Listando todas as permissões de entidades de segurança do banco de dados

A consulta a seguir lista as permissões concedidas ou negadas explicitamente a entidades de segurança do banco de dados.

Importante

As permissões de funções de banco de dados fixas não aparecem em sys.database_permissions. Portanto, entidades de segurança do 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 a objetos de esquema em um banco de dados

A consulta a seguir une sys.database_principals e sys.database_permissions com 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 e PDW (Analytics Platform System)

C: Listar todas as permissões de entidades de segurança do banco de dados

A consulta a seguir lista as permissões concedidas ou negadas explicitamente a entidades de segurança do banco de dados.

Importante

As permissões de funções de banco de dados fixas não aparecem em sys.database_permissions. Portanto, entidades de segurança do 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: Listar permissões a 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;  

Consulte Também

Entidades (Mecanismo de Banco de Dados)
sys.server_principals (Transact-SQL)
Exibições do catálogo de segurança (Transact-SQL)
Usuários do Banco de Dados Independente - Tornando seu Banco de Dados Portátil
Conectando-se ao SQL do Azure com a autenticação do Microsoft Entra