Eu me conecto ao SQL Server com um determinado usuário que não é administrador. Eu quero obter uma lista de todas as minhas conexões abertas. Encontrei inúmeros comandos para fazer isso, mas todos se enquadram em uma dessas categorias:
Não tenho permissão para executar esse comando:
Msg 297, Nível 16, Estado 1, Linha 1
O usuário não tem permissão para executar esta ação.Eu só vejo minha sessão atual!
É possível listar todas as sessões do usuário atual ?
Você precisa ter
VIEW SERVER STATE
permissão na conta de usuário.Isso precisará ser concedido por alguém com privilégios suficientes e permitirá que você visualize todas as sessões ao executar comandos como
sp_who
ousp_whoisactive
.Se você está preocupado com as implicações de segurança desta permissão, esta postagem pode ajudar as implicações de segurança e desempenho de "Exibir estado do servidor"
Depois de ter as permissões para visualizar o estado do servidor, você pode restringir apenas seu usuário, passando-o como um parâmetro
O SQL Server foi projetado (junto com a maioria dos mecanismos de banco de dados) com a segurança em mente. As principais áreas que você verá para visualizar os usuários são
Todos esses comandos são acessíveis para todos os usuários (todos são visualizações), mas as visualizações são restritas apenas ao seu spid atual, a menos que você tenha a permissão 'visualizar estado do servidor', que pode ser concedida em um banco de dados por nível de banco de dados.
Um usuário recebe as permissões básicas para visualizar sua própria conexão, pois são informações sobre você (observe que isso sempre informará que você está executando um comando select, pois é isso que você está fazendo no momento)
Se você tiver a permissão 'exibir estado do servidor', poderá executar uma consulta como:
(Ou crie um procedimento para executá-lo) NOTA: isso NÃO funcionará para nenhuma conta de administrador de sistema, pois seu current_user é sempre 'dbo'
EDIT: Aviso, visualizar o estado do servidor concederá permissão para visualizar qualquer pessoa que esteja conectada, não apenas pessoas com o nome de usuário atual, portanto, verifique qual segurança adicional em potencial deseja implementar para isso, se necessário