← Questões de Banco de Dados

Banco de Dados · FGV · 2023

Questão comentada de Banco de Dados

O comando correto de administração numa instalação SQL Server que concede a permissão de execução de uma stored procedure X num esquema (schema) Y para um papel (role) Z é:

Gabarito: D

No SQL Server, permissões de objeto são dadas com o verbo GRANT, seguido da permissão e do alvo exato. Quando voce quer permitir a execução de uma stored procedure, a forma padrão é algo como GRANT EXECUTE ON OBJECT::schema.procedimento TO principal. Aqui, o esquema (schema) entra no nome totalmente qualificado do objeto, porque a procedure pertence a esse schema. O papel (role) recebe a permissão, e depois qualquer usuario membro desse role herda esse acesso. Isso é bem a cara do SQL Server: sintaxe objetiva, sem firulas, mas com detalhes que a banca adora trocar de lugar. No enunciado, a procedure X está no schema Y e a permissão vai para o role Z. Logo, o comando correto precisa indicar o objeto com o prefixo do schema e usar TO Z para conceder ao papel. Por isso, GRANT EXECUTE ON OBJECT::Y.X TO Z está certo. O trecho OBJECT:: é a notação usada no SQL Server para deixar claro que se trata de um objeto específico do banco, e não de uma permissão genérica. As demais alternativas erram a sintaxe, trocam palavras-chave ou inventam estruturas que não existem no T-SQL. Em prova, vale lembrar: no SQL Server, para dar permissão de executar procedure, o padrão é GRANT EXECUTE ON [OBJECT|SCHEMA] ... TO ...; se o objeto tem schema, ele aparece no nome do objeto. Essa lógica está alinhada ao modelo de permissões do próprio SQL Server, descrito na documentação da Microsoft sobre GRANT e permissões em objetos. Resumo de bolso: procedure no schema? Nome qualificado. Quer conceder execução? GRANT EXECUTE. Quer dar ao role? TO role. Se alguma alternativa fugir disso, desconfie, porque provavelmente a banca colocou uma sintaxe “fantasia” para testar sua memória e sua calma.

Continue treinando

Questões relacionadas