Obter saída detalhada do trabalho do SQL Agent

15

Temos um trabalho do SQL Server Agent que executa um plano de manutenção para reindexar todo o banco de dados no servidor. Recentemente, isso falhou, mas o histórico do trabalho não está fornecendo informações suficientes para diagnosticar o problema.

No histórico do trabalho, ele afirma que o trabalho falhou. O trabalho foi chamado pelo usuário foo \ bar. A última etapa a ser executada foi a etapa 1 (Índice de reconstrução).

Na janela de detalhes, há várias mensagens no seguinte formato:

Executing query "ALTER INDEX [something] ON [a...".: 0% complete  End Progress  Progress: 2015-03-15 22:51:23.67     Source: Rebuild Index Task

A instrução SQL que está sendo executada está truncada e eu presumo que a saída da instrução também esteja truncada, impedindo que eu seja capaz de identificar qual instrução específica falhou e por quê. Existe alguma maneira de extrair o texto completo dessas mensagens?

toryan
fonte
1
Acho que a @kin faz um bom trabalho em responder à sua pergunta inicial, mas, na minha opinião, isso é mais um problema de depuração. Se você souber o índice em que está falhando, tentarei identificar por que esse índice específico está falhando. Você pode ver o código sql usado? Está em um processo armazenado? Você pode fazer várias coisas para reduzi-lo. Crie um trabalho apenas com esse índice. Execute o rastreamento sql enquanto esse trabalho estiver em execução. Capture o sql usado e tente reproduzir o problema.
precisa saber é o seguinte

Respostas:

18

Existe alguma maneira de extrair o texto completo dessas mensagens?

Você pode conseguir isso de duas maneiras - Vá na etapa do trabalho e selecione a guia Avançado:

uma. Saída para um arquivo (<== Meu método preferido)

insira a descrição da imagem aqui

b. "Registrar na tabela" e "Incluir saída da etapa no histórico" (<== Você precisa cortar a msdb..sysjobhistorylongo prazo, pois as mensagens são armazenadas em nvarchar(max)vez de nvarchar(1024))

insira a descrição da imagem aqui

Para ver as informações adicionais registradas, é necessário usar este procedimento armazenado sp_help_jobsteplog ou você pode consultar a msdb.dbo.sysjobstepslogstabela diretamente.

Mais informações aqui

Kin Shah
fonte
Saúde, eu vou dar uma chance. apenas para que você saiba, o nome correto dessa tabela é msdb.dbo.sysjobstepslogs ('logs' em vez de 'log'). Tentei editar a resposta, mas edições de caracteres únicos não são permitidas.
toryan
1
@toryan np. Eu editei minha resposta. Se você acha que eu respondi sua pergunta, vote / marque como resposta.
Kin Shah
1
Executei novamente o trabalho e desta vez só gerou um erro, registrado na tabela conforme descrito. Infelizmente, o texto da consulta ainda estava truncado - existe alguma maneira de obter mais informações?
toryan
Eu duvido. Você pode tentar com o método 1 do arquivo de saída, conforme descrito na minha resposta.
Kin Shah
1
@ toryan Eu tive o mesmo problema - o log ainda estava truncado, mesmo com a saída para uma tabela (método (b) acima) e a leitura sysjobstepslogs. Essa foi a recomendação da maioria das discussões online sobre esse problema. Mas o método (a), saída para um arquivo, NÃO teve esse problema: os arquivos de texto estão me mostrando todo o registro de etapas do trabalho, finalmente sem truncamento! (No meu caso, minhas etapas de trabalho são DTEXECcomandos, executando pacotes SSIS.) Apenas desvantagem: somente a última execução é vista, a menos que seja anexada ao arquivo. Em vez de anexar, optei por viver com truncamento em execuções anteriores.
21416 Doug_Ivison
2

Você pode obter texto completo:

  1. Ir para o trabalho
  2. Clique com o botão direito select properties
  3. Vá para a etapa do trabalho
  4. Selecione stepe clique no editbotão
  5. Selecione advanced. Aqui você pode ver o caminho do log.

Agora é simples seguir o caminho.

Parassharma1990
fonte