Um Analista de Sistemas está configurando permissões em um b...

Próximas questões
Com base no mesmo assunto
Q4036222 Banco de Dados
Um Analista de Sistemas está configurando permissões em um banco de dados do SQL Server. Ele precisa garantir que determinados usuários não possam executar certas stored procedures, mesmo que pertençam a roles que tenham permissões concedidas. Para isso, ele decide usar a instrução DENY, que bloqueia explicitamente a permissão, sobrepondo qualquer GRANT existente. Considerando esse contexto, qual é a sintaxe CORRETA para negar a execução de uma stored procedure chamada sp_DeleteOrders ao usuário user_Intern?
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Gabarito: D

Fundamento decisivo: O ponto decisivo era a estrutura sintática do DENY em nível de objeto no SQL Server: o objeto-alvo vem após ON e o principal após TO, o que identifica a alternativa D.

Tema central: Sintaxe do DENY
Análise das alternativas
A
Errada
Está incorreta porque usa EXECUTE AS dbo.sp_DeleteOrders. Nessa construção, o objeto da permissão não é indicado com AS; para negar permissão sobre uma stored procedure específica, o objeto deve vir após ON.
B
Errada
Está incorreta porque usa IS sp_DeleteOrders, elemento sintático incompatível com o comando DENY para permissão sobre objeto. A estrutura exigida é ON objeto TO principal, o que torna IS inválido nessa construção.
C
Errada
Está incorreta porque repete o uso indevido de AS para indicar a stored procedure e não apresenta o objeto na posição correta. O alvo da negação deve ser informado após ON.
D
Certa
A alternativa D está correta porque expressa a forma operacional de negar a permissão de EXECUTE sobre uma stored procedure específica no SQL Server: DENY EXECUTE ON dbo.sp_DeleteOrders TO user_Intern. Nessa construção, EXECUTE é a permissão negada, dbo.sp_DeleteOrders é o objeto securável indicado após ON e user_Intern é o principal informado após TO. Essa ordem corresponde à sintaxe de negação de permissão em objeto.
E
Errada
Está incorreta porque inverte a ordem dos elementos do comando: coloca o principal após TO antes do objeto e só depois usa ON. A ordem correta é permissão + ON objeto + TO principal.
Pegadinha da questão
A confusão real era trocar a sintaxe de permissão sobre objeto por construções com EXECUTE AS ou inverter a ordem entre objeto e principal. Em DENY para stored procedure específica, o objeto vem após ON e o usuário vem após TO.
Dica para questões semelhantes
  • Se a permissão recai sobre um objeto específico no SQL Server, procure a cláusula ON antes do nome do objeto.
  • No DENY em nível de objeto, o principal afetado pela negação aparece depois de TO.
  • Não use AS para identificar a stored procedure-alvo em um comando DENY de permissão.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

No SQL Server, a sintaxe geral é:

  • DENY <permissão>
  • ON <objeto>
  • TO <usuário_ou_role>;

Essa instrução impede explicitamente que user_Intern execute a stored procedure sp_DeleteOrders, mesmo que ele receba essa permissão por meio de uma role.

Gabarito: B

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo