Eu tenho um banco de dados Microsoft SQL Server 2008 r2. É definido um usuário chamado marie, que pode acessar as tabelas do banco de dados principal; isso funciona bem. Agora, gostaria que a marie pudesse realizar esta consulta:
SELECT resource_type,spid,login_time,status,hostname,program_name,nt_domain,nt_username,loginame
FROM sys.dm_tran_locks dl
JOIN sys.sysprocesses sp on dl.request_session_id = sp.spid
As tabelas envolvidas são tabelas mestras; como dou permissão para maria ler deles? Já tentei executar o seguinte como dbo:
GRANT ALL on sys.dm_tran_locks TO marie
GRANT ALL on sys.sysprocesses TO marie
Ainda assim, quando marie tenta realizar a consulta acima, o erro é:
Msg 297, Level 16, State 1, Line 1
The user does not have permission to perform this action.
O que estou fazendo errado?
As exibições do sistema exigem um estado ligeiramente elevado para exibição, pois são amplas de instância. Você vai querer
GRANT VIEW SERVER STATE
para isso: