No SQL Server 2012, tenho um Job Agent Alert configurado da seguinte forma:
EXEC msdb.dbo.sp_add_alert @name=N'Deadlock Alert',
@message_id=0,
@severity=0,
@enabled=1,
@delay_between_responses=0,
@include_event_description_in=1,
@category_name=N'[Uncategorized]',
@performance_condition=N'Locks|Number of Deadlocks/sec|_Total|>|0',
@job_id=N'00000000-0000-0000-0000-000000000000'
Tenho um trabalho agendado para ser executado todos os dias da semana às 17h30 que executa esta etapa:
EXEC msdb.dbo.sp_update_alert @name = N`enter code here`'Deadlock Alert', @enabled = 0;
Tenho outro que reativa o alerta às 8h todos os dias da semana. Ambos os trabalhos (e o alerta) estão funcionando bem há meses em dezenas de instâncias. Mas o trabalho às 17h30 da sexta-feira falhou em uma instância com as seguintes mensagens:
O object_name especificado ('Bloqueios') não existe. [SQLSTATE 42000] (Erro 14262) O object_name especificado ('Databases') não existe. [SQLSTATE 42000] (Erro 14262). A etapa falhou.
Se eu executar o comando sp_update_alert diretamente para esse alerta (com ativado definido como 0 ou 1). Eu recebo este erro:
Msg 14262, Nível 16, Estado 1, Procedimento sp_verify_performance_condition, Linha 50 O object_name especificado ('Bloqueios') não existe.
Tentei desabilitar o alerta usando a interface do usuário do SSMS e obtive:
O object_name especificado ('Bloqueios') não existe. (Microsoft SQL Server, erro: 14262)
Este par de tarefas ainda está funcionando sem erros em todas as outras instâncias. O que poderia estar causando a falha de sp_update_alert nisso ocorreu em apenas uma instância e somente desde sexta-feira?
[Adicionado:]
As tarefas habilitar e desabilitar também habilitam e desabilitam outro alerta, que examina o contador SQLServer:Databases|Data File(s) Size (KB)|tempdb e esses comandos lançam o erro "O object_name especificado ('Databases') não existe ". Novamente, apenas neste caso. Os mesmos trabalhos e alertas ainda funcionam bem em outra instância no mesmo servidor.
Verifique se a conta do SQL Server Agent tem as permissões necessárias para consultar os contadores de desempenho DMV (parece que sua conta de agente foi alterada recentemente). De acordo com a documentação :
Então:
Certifique-se também de que, como esse login (ou qualquer login com
VIEW SERVER STATE
, comosa
), você pode ver os resultados do DMV. Já ouvi falar de muitos casos em que os contadores de desempenho simplesmente ficam vazios no SQL Server, e isso remonta ao SQL Server 2000 comsysperfinfo
. Várias fontes sugerem o seguinte como uma solução na linha de comando (seguida por uma reinicialização):É claro que a Microsoft fecha a maioria desses relatórios como sem reprodução (o que não me surpreende, pois não vi esse sintoma diretamente e não tenho ideia de como reproduzir o problema).
Também alguns conselhos nesses tópicos, que você pode tentar (estes são bastante antigos e não vou tentar resumir e repetir as informações aqui):