Eu criei um trabalho SQLAgent e uma das etapas do trabalho executa um procedimento que não está sob meu controle direto. O procedimento contém instruções de impressão e, quando é executado, a saída de todas essas instruções de impressão aparece em Histórico do trabalho->Resumo do arquivo de log->painel de detalhes da linha como uma mensagem. Isso por si só não é um problema, mas essas mensagens ocultam um erro que às vezes pode ocorrer. Como configuro o SQLAgent (ou a etapa de trabalho) de forma que ele ignore essas mensagens (informativas) e mostre apenas mensagens de erro. Etapa para repro: Crie uma etapa de trabalho que tenha a instrução: imprima 'hello world' e execute a etapa de trabalho. O histórico mostra Mensagem executada como usuário: NT SERVICE\SQLAgent$MSSQLSERVER2019. olá mundo [SQLSTATE 01000] (mensagem 0). A etapa deu certo. Agora, se eles são uma série dessas instruções de impressão entre uma instrução SQL cuja execução resulta em um erro de divisão por zero, ela aparecerá como uma mensagem, mas será obscurecida por todas essas saídas de instrução de impressão. Mas se essas mensagens informativas puderem ser suprimidas, a mensagem de erro será facilmente visível.
relate perguntas
-
SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado
-
Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?
-
Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?
-
Quais são as principais causas de deadlocks e podem ser evitadas?
-
Como determinar se um Índice é necessário ou necessário
Não acredito que seja possível infelizmente. Essas não são uma categoria específica de mensagens, mas apenas saídas do procedimento que foi executado.
Em vez disso, o que você pode fazer, para melhorar sua rastreabilidade em erros, é capturar a saída/mensagem completa para uma fonte separada que não seja limitada em comprimento de caractere, para que não seja truncada.
Informações relevantes de Kin Shah para fins de referência histórica:
O que isso faz é registrar a mensagem completa em outro local que não seja a tabela padrão,
msdb.dbo.sysjobhistory
que possui um limite de caracteres.Mais informações de acordo com a resposta acima mencionada de Kin.