Questão nº 80
Questão de Suporte · FGV DPGE-RJ 2014 (nº 80)
Observe os seguintes comandos no MS SQL Server:
```sql
grant create table to X
grant create view to Y with grant option
grant execute on Z to X
exec sp_addrolemember W, X
```
Pode-se afirmar que W, X, Y e Z devem denotar, respectivamente
- Aum database role; um usuário; um usuário; uma stored procedure. (alternativa correta)
- Bum database role; um usuário; um usuário; um banco de dados.
- Cum usuário; um usuário; um banco de dados; um database role.
- Duma stored procedure; uma tabela; uma tabela; um trigger.
- Eum usuário; um database role; um banco de dados; um trigger.
Resposta comentada
Gabarito Alternativa A
No MS SQL Server, a segurança e permissões (DCL - Data Control Language) são gerenciadas concedendo ou revogando privilégios a principais (entidades que podem se conectar e interagir com o banco de dados, como usuários e roles) sobre securables (objetos do banco de dados, como tabelas, views, stored procedures, ou o próprio banco de dados).
- (A) Correta: W é um database role (papel de banco de dados) porque
sp_addrolememberadiciona um membro a um role. X é um usuário pois recebe permissões diretamente (create table,execute on Z) e é membro de um role. Y é um usuário que recebe a permissãocreate view. Z é uma stored procedure (procedimento armazenado) pois a permissãoexecuteé tipicamente concedida sobre objetos executáveis como procedures ou funções. - (B) Incorreta: Z não pode ser "um banco de dados" para a permissão
execute on Z; a permissãoexecuteé para objetos executáveis dentro do banco de dados, como stored procedures, não para o banco de dados em si. - (C) Incorreta: W não pode ser "um usuário" pois
sp_addrolememberespera um role como primeiro argumento. Y não pode ser "um banco de dados" poisgrant create view to Yespera um principal (usuário ou role). - (D) Incorreta: W não pode ser "uma stored procedure" pois
sp_addrolememberespera um role. X e Y não podem ser "uma tabela" pois são os principais que recebem permissões. Z não pode ser "um trigger" paragrant execute on Z, pois triggers são executados automaticamente por eventos, não diretamente por um comandoexecute. - (E) Incorreta: W não pode ser "um usuário" pois
sp_addrolememberespera um role. Y não pode ser "um banco de dados" poisgrant create view to Yespera um principal. Z não pode ser "um trigger" paragrant execute on Zpelo mesmo motivo da alternativa D.
Fonte: FGV DPGE-RJ 2014 Técnico Superior Especializado em Suporte (Caderno Tipo 1). Reproduzida para fins de estudo.