Ottieni un output dettagliato del processo di SQL Agent


15

Abbiamo un processo di SQL Server Agent che esegue un piano di manutenzione per reindicizzare tutto il database sul server. Recentemente questo non è riuscito ma la cronologia dei lavori non fornisce informazioni sufficienti per diagnosticare il problema.

Nella cronologia dei lavori indica Il lavoro non è riuscito. Il lavoro è stato invocato dall'utente foo \ bar. L'ultimo passaggio da eseguire è stato il passaggio 1 (Ricostruisci indice).

Nella finestra dei dettagli sono presenti più messaggi nel seguente formato:

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

L'istruzione SQL in esecuzione viene troncata e suppongo che anche l'output dell'istruzione venga troncato, impedendomi di essere in grado di identificare quale specifica istruzione non è riuscita e perché. Esiste un modo per estrarre il testo completo di questi messaggi?


1
Penso che @kin faccia un buon lavoro nel rispondere alla tua domanda iniziale, ma secondo me questo è più un problema di debug. Se conosci l'indice su cui sta fallendo, proverei a identificare il motivo per cui l'indice specifico non sta funzionando. Riesci a vedere il codice sql utilizzato? È in un proc memorizzato? Potresti fare diverse cose per restringerlo. Crea un lavoro con solo quell'indice. Eseguire sql trace mentre quel lavoro è in esecuzione. Cattura il sql usato quindi prova a riprodurre il problema.
Sir Swears-tanto

Risposte:


18

Esiste un modo per estrarre il testo completo di questi messaggi?

Puoi raggiungerlo in 2 modi: vai nella fase di lavoro e seleziona la scheda Avanzate:

un. Output su un file (<== Il mio metodo preferito)

inserisci qui la descrizione dell'immagine

b. "Log alla tavola" e "Includi uscita passo nella storia" (<== è necessario tagliare msdb..sysjobhistoryin-lungo periodo, come i messaggi vengono memorizzati come nvarchar(max)invece di nvarchar(1024))

inserisci qui la descrizione dell'immagine

Per visualizzare le informazioni aggiuntive registrate è necessario utilizzare questa procedura memorizzata sp_help_jobsteplog oppure è possibile eseguire una query msdb.dbo.sysjobstepslogsdirettamente sulla tabella.

Maggiori informazioni qui


Saluti, ci proverò. solo per farvi sapere, il nome corretto di quella tabella è msdb.dbo.sysjobstepslogs ('logs' piuttosto che 'log'). Ho provato a modificare la risposta ma le modifiche a carattere singolo non sono consentite.
toryan,

1
@toryan np. Ho modificato la mia risposta. Se ritieni di aver risposto alla tua domanda, per favore vota / segna come risposta.
Kin Shah,

1
Ho eseguito nuovamente il lavoro e questa volta ha generato un solo errore, che è stato registrato nella tabella come descritto. Sfortunatamente il testo della query era ancora troncato: esiste un modo per ottenere maggiori informazioni?
toryan,

Ne dubito. Puoi provare con il metodo 1 del file di output come descritto nella mia risposta.
Kin Shah,

1
@toryan Ho avuto lo stesso problema - la registrazione era ancora troncata, anche con l'output su una tabella (metodo (b) sopra) e la lettura sysjobstepslogs. Questa è stata la raccomandazione della maggior parte delle discussioni online su questo problema. Ma il metodo (a), emesso su un file, NON ha avuto questo problema: i file di testo mi stanno mostrando tutto il log delle fasi del lavoro, finalmente senza troncamento! (Nel mio caso, i miei passaggi di lavoro sono DTEXECcomandi, che eseguono pacchetti SSIS.) Unico inconveniente: viene visualizzata solo l'ultima esecuzione, a meno che non venga aggiunta al file. Piuttosto che aggiungere, scelgo di vivere con troncamento nelle corse precedenti.
Doug_Ivison,

2

È possibile ottenere il testo completo:

  1. Vai al lavoro
  2. Tasto destro select properties
  3. Vai al passaggio di lavoro
  4. Seleziona stepe fai clic suedit pulsante
  5. Selezionare advanced. Qui puoi vedere il percorso del registro.

Ora è semplice seguire il percorso.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.