Como faço para conceder acesso limitado a sysprocesses no SQL Server 2005?

votos
0

Estou implementando alguns monitoramento rudimentar SQL Server para assistir bloqueio excessivo.

Eu tenho um procedimento armazenado que se parece com isso:

CREATE PROCEDURE [dbo].[bsp_GetBlockedProcessCount]
AS
BEGIN
    SET NOCOUNT ON;

    DECLARE @count INT

    SELECT @count = COUNT(*)
    FROM master.dbo.sysprocesses WITH (NOLOCK)
    WHERE blocked > 0

    RETURN @count
END

Quando eu executar este em um contexto de administrador, eu recebo a resposta correta. Quando eu executar isto no contexto de um usuário com privilégios limitados (ou seja, o servidor web), recebo zero, independentemente da resposta verdadeira.

Não posso pensar em algumas soluções, mas eu não estou feliz qualquer um deles:

  1. I pode conceder privilégios estado de exibição do servidor para o usuário, mas que é muito mais permissão do que este usuário deve ter:

    GRANT VIEW SERVER STATE TO [Webserver]
    
  2. Execute o proc de um trabalho SQL e colocar os resultados em algum lugar para o servidor web para pegar, mas isso é confuso e complicado.

  3. Não tente e chamar isso a partir do servidor web!

Eu tenho certeza que há uma solução melhor. Alguma sugestão?

Publicado 09/12/2008 em 20:59
fonte usuário
Em outras línguas...                            


1 respostas

votos
0

Eu estou feliz que eu não sei as respostas em primeira mão :) mas eu tenho jogado com EXECUTAR AS e reverter para alternar entre usuários

Mas aqui estão 2 links bom começar com

Comutação armazenados Contexto execução do procedimento no SQL Server utilizando a cláusula REVERT

resumo: você concede usuário para representar como dizer DBA, em seguida, voltar depois

http://www.mssqltips.com/tip.asp?tip=1579

Dar Permissão através de procedimentos armazenados

Resumindo: eu sou muito preguiçoso para ler a coisa toda

http://www.sommarskog.se/grantperm.html

Respondeu 09/12/2008 em 21:21
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more