Detaillierte Ausgabe des SQL Agent-Jobs abrufen

15

Wir haben einen SQL Server-Agent-Job, der einen Wartungsplan ausführt, um die gesamte Datenbank auf dem Server neu zu indizieren. Vor kurzem ist dies fehlgeschlagen, aber die Jobhistorie enthält nicht genügend Informationen, um das Problem zu diagnostizieren.

In der Job-Historie steht, dass der Job fehlgeschlagen ist. Der Job wurde vom Benutzer foo \ bar aufgerufen. Der letzte auszuführende Schritt war Schritt 1 (Index neu erstellen).

Im Detailfenster befinden sich mehrere Nachrichten in folgender Form:

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

Die ausgeführte SQL-Anweisung ist abgeschnitten, und ich gehe davon aus, dass die Ausgabe der Anweisung ebenfalls abgeschnitten ist, sodass ich nicht feststellen kann, welche bestimmte Anweisung fehlgeschlagen ist und warum. Gibt es eine Möglichkeit, den vollständigen Text dieser Nachrichten zu extrahieren?

Toryan
quelle
1
Ich denke, @kin kann Ihre erste Frage gut beantworten, aber meiner Meinung nach handelt es sich eher um ein Debugging-Problem. Wenn Sie den Index kennen, auf dem es ausfällt, dann würde ich versuchen, zu identifizieren, warum dieser spezifische Index ausfällt. Können Sie den verwendeten SQL-Code sehen? Ist es in einem gespeicherten proc? Sie könnten verschiedene Dinge tun, um es einzugrenzen. Erstellen Sie einen Job nur mit diesem Index. Führen Sie den SQL-Trace aus, während der Job ausgeführt wird. Erfassen Sie den verwendeten SQL-Code und versuchen Sie dann, das Problem zu reproduzieren.
Sir Swears-a-lot

Antworten:

18

Gibt es eine Möglichkeit, den vollständigen Text dieser Nachrichten zu extrahieren?

Sie haben zwei Möglichkeiten: Gehen Sie zum Job-Schritt und wählen Sie die Registerkarte Erweitert:

ein. Ausgabe in eine Datei (<== Meine bevorzugte Methode)

Bildbeschreibung hier eingeben

b. "In Tabelle protokollieren" und "Schrittausgabe in Verlauf einbeziehen" (<== Sie müssen auf msdb..sysjobhistorylange Sicht trimmen , da die Nachrichten gespeichert werden als nvarchar(max)statt nvarchar(1024))

Bildbeschreibung hier eingeben

Um die zusätzlichen protokollierten Informationen anzuzeigen, müssen Sie diese gespeicherte Prozedur sp_help_jobsteplog verwenden, oder Sie können die msdb.dbo.sysjobstepslogsTabelle direkt abfragen .

Mehr Infos hier

Kin Shah
quelle
Prost, ich werde es versuchen. Nur um Sie wissen zu lassen, ist der korrekte Name dieser Tabelle msdb.dbo.sysjobstepslogs ('logs' anstatt 'log'). Ich habe versucht, die Antwort zu bearbeiten, aber es sind keine Einzelzeichenänderungen zulässig.
Toryan
1
@toryan np. Ich habe meine Antwort bearbeitet. Wenn Sie das Gefühl haben, dass ich Ihre Frage beantwortet habe, stimmen Sie bitte ab oder markieren Sie sie als Antwort.
Kin Shah
1
Ich habe den Job erneut ausgeführt und diesmal wurde nur ein Fehler generiert, der wie beschrieben in der Tabelle aufgezeichnet wurde. Leider wurde der Text der Abfrage immer noch abgeschnitten. Gibt es eine Möglichkeit, weitere Informationen zu erhalten?
Toryan
Das bezweifle ich. Kannst du es mit der Ausgabedateimethode 1 versuchen, wie in meiner Antwort beschrieben.
Kin Shah
1
@toryan Ich hatte das gleiche Problem - die Protokollierung wurde trotz Ausgabe in eine Tabelle (Methode (b) oben) und Lesen immer noch abgeschnitten sysjobstepslogs. Dies war die Empfehlung der meisten Online-Diskussionen zu diesem Problem. Aber Methode (a), die in eine Datei ausgegeben wurde, hatte NICHT dieses Problem: Die Textdateien zeigen mir alle Jobschrittprotokolle, endlich ohne Kürzung! (In meinem Fall sind meine DTEXECJobschritte Befehle, die SSIS-Pakete ausführen.) Einziger Nachteil: Es wird nur die letzte Ausführung angezeigt, es sei denn, es wird eine Datei angehängt. Anstatt anzuhängen, entscheide ich mich, bei früheren Läufen mit Kürzungen zu leben.
Doug_Ivison
2

Sie können Volltext erhalten:

  1. Geh zum Job
  2. Rechtsklick select properties
  3. Geh den Job Schritt
  4. Wählen Sie stepund klicken Sie aufedit Schaltfläche
  5. Auswählen advanced. Hier sehen Sie den Protokollpfad.

Nun ist es einfach, dem Pfad zu folgen.

Parassharma1990
quelle