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
PDW (Analytics Platform System)
Ponto de extremidade de análise de SQL no Microsoft Fabric
Warehouse 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 anteriormente 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çãoINSTANCE : autenticação de instânciaDATABASE : autenticação de banco de dadosWINDOWS : autenticação do WindowsEXTERNAL : 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