Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base de dados SQL no Microsoft Fabric
Devolve um valor contendo um bitmap que indica as permissões de instrução, objeto ou coluna do utilizador atual.
Importante
Esse recurso será removido em uma versão futura do SQL Server. Evite usar esse recurso em novos trabalhos de desenvolvimento e planeje modificar aplicativos que atualmente usam esse recurso. Use fn_my_permissions e Has_Perms_By_Name em vez disso. A utilização contínua da função PERMISSÕES pode resultar num desempenho mais lento.
Transact-SQL convenções de sintaxe
Sintaxe
PERMISSIONS ( [ objectid [ , 'column' ] ] )
Arguments
Objectid
É o ID de um seguro. Se o objectid não for especificado, o valor bitmap contém permissões de instrução para o utilizador atual; caso contrário, o bitmap contém permissões sobre o securável para o utilizador atual. O seguro especificado deve estar na base de dados atual. Use a função OBJECT_ID para determinar o valor do objectid .
'coluna'
É o nome opcional de uma coluna para a qual a informação de permissão está a ser devolvida. A coluna deve ser um nome de coluna válido na tabela especificada pelo objectid.
Tipos de devolução
int
Observações
As PERMISSÕES podem ser usadas para determinar se o utilizador atual tem as permissões necessárias para executar uma instrução ou para CONCEDER uma permissão a outro utilizador.
A informação de permissões devolvida é um bitmap de 32 bits.
Os 16 bits inferiores refletem permissões concedidas ao utilizador, bem como permissões aplicadas a grupos do Windows ou papéis fixos de servidor dos quais o utilizador atual é membro. Por exemplo, um valor retornado de 66 (valor hexadecimal 0x42), quando não é especificado nenhum objectid , indica que o utilizador tem permissão para executar as instruções CREATE TABLE (valor decimal 2) e BACKUP DATABASE (valor decimal 64).
Os 16 bits superiores refletem as permissões que o utilizador pode CONCEDER a outros utilizadores. Os 16 bits superiores são interpretados exatamente como os dos 16 bits inferiores descritos nas tabelas seguintes, exceto que são deslocados para a esquerda por 16 bits (multiplicados por 65536). Por exemplo, 0x8 (valor decimal 8) é o bit que indica a permissão INSERT quando um objectid é especificado. Enquanto que 0x80000 (valor decimal 524288) indica a capacidade de CONCEDER INSERÇÃO de permissão, porque 524288 = 8 x 65536.
Devido à pertença a papéis, um utilizador que não tenha permissão para executar uma instrução pode ainda assim conceder essa permissão a outro utilizador.
A tabela seguinte mostra os bits que são usados para permissões de instruções (o objectid não é especificado).
| Bit (dec) | Broca (hexágono) | Permissão de declaração |
|---|---|---|
| 1 | 0x1 | CREATE DATABASE (apenas base de dados mestre) |
| 2 | 0x2 | CREATE TABLE |
| 4 | 0x4 | CRIAR PROCEDIMENTO |
| 8 | 0x8 | CRIAÇÃO DE VISÃO |
| 16 | 0x10 | CRIAR REGRA |
| 32 | 0x20 | CRIAR PADRÃO |
| 64 | 0x40 | BANCO DE DADOS DE BACKUP |
| 128 | 0x80 | REGISTO DE CÓPIA DE SEGURANÇA |
| 256 | 0x100 | Reservado |
A tabela seguinte mostra os bits usados para permissões de objeto que são devolvidos quando apenas o objectid é especificado.
| Bit (dec) | Broca (hexágono) | Permissão de declaração |
|---|---|---|
| 1 | 0x1 | SELECIONAR TODOS |
| 2 | 0x2 | ATUALIZAÇÃO GERAL |
| 4 | 0x4 | REFERÊNCIAS TODAS |
| 8 | 0x8 | INSERT |
| 16 | 0x10 | DELETE |
| 32 | 0x20 | EXECUTE (apenas procedimentos) |
| 4096 | 0x1000 | SELECIONAR QUALQUER (pelo menos uma coluna) |
| 8192 | 0x2000 | ATUALIZAÇÃO ALGUMA |
| 16384 | 0x4000 | REFERÊNCIAS QUALQUER |
A tabela seguinte mostra os bits usados para permissões de objeto ao nível da coluna que são devolvidas quando tanto o objectid como a coluna são especificados.
| Bit (dec) | Broca (hexágono) | Permissão de declaração |
|---|---|---|
| 1 | 0x1 | SELECT |
| 2 | 0x2 | UPDATE |
| 4 | 0x4 | REFERENCES |
Um NULL é devolvido quando um parâmetro especificado é NULL ou não válido (por exemplo, um objectid ou coluna que não existe). Os valores de bits para permissões que não se aplicam (por exemplo, permissão EXECUTAR, bit 0x20, para uma tabela) são indefinidos.
Use o operador bit a bit AND (&) para determinar cada conjunto de bits no bitmap que é devolvido pela função PERMISSIONS.
O procedimento armazenado do sistema sp_helprotect também pode ser usado para devolver uma lista de permissões para um utilizador na base de dados atual.
Examples
A. Utilização da função PERMISSIONS com permissões de instruções
O exemplo seguinte determina se o utilizador atual pode executar a CREATE TABLE instrução.
IF PERMISSIONS()&2=2
CREATE TABLE test_table (col1 INT)
ELSE
PRINT 'ERROR: The current user cannot create a table.';
B. Usar a função PERMISSIONS com permissões de objeto
O exemplo seguinte determina se o utilizador atual pode inserir uma linha de dados na Address tabela da AdventureWorks2025 base de dados.
IF PERMISSIONS(OBJECT_ID('AdventureWorks2022.Person.Address','U'))&8=8
PRINT 'The current user can insert data into Person.Address.'
ELSE
PRINT 'ERROR: The current user cannot insert data into Person.Address.';
C. Usar a função PERMISSIONS com permissões concedíveis
O exemplo seguinte determina se o utilizador atual pode conceder a permissão INSERT na Address tabela da AdventureWorks2025 base de dados a outro utilizador.
IF PERMISSIONS(OBJECT_ID('AdventureWorks2022.Person.Address','U'))&0x80000=0x80000
PRINT 'INSERT on Person.Address is grantable.'
ELSE
PRINT 'You may not GRANT INSERT permissions on Person.Address.';
Ver também
NEGAR (Transact-SQL)
SUBVENÇÃO (Transact-SQL)
OBJECT_ID (Transact-SQL)
REVOGAR (Transact-SQL)
sp_helprotect (Transact-SQL)
Funções do sistema (Transact-SQL)