Skip to main content

SQL Server Logs

Kurzantwort

  • Vollständige Logs findest du als Dateien im MSSQL-Logverzeichnis:
    • SQL Server: ERRORLOG, ERRORLOG.1, …
    • SQL Server Agent: SQLAGENT.OUT, SQLAGENT.1, …
  • Die „Job-Historie“ im Agent-Fenster wird auf ca. 4.000 Zeichen pro Schritt gekürzt. Für die komplette Ausgabe leite die Steps in eine Datei oder Tabelle um (siehe unten).

Wo liegen die Log-Dateien?

  • Windows (Standardpfad, kann abweichen):
    C:\Program Files\Microsoft SQL Server\MSSQLXX.<Instanz>\MSSQL\Log\
    Dateien: ERRORLOG, ERRORLOG.1 … und SQLAGENT.OUT, SQLAGENT.1 …
  • Linux:
    /var/opt/mssql/log/errorlog
    /var/opt/mssql/log/sqlagent.out

Per T‑SQL den aktuellen Pfad ermitteln:

-- voller Pfad zur aktuellen ERRORLOG-Datei
SELECT SERVERPROPERTY('ErrorLogFileName') AS ErrorLogFile;

In SSMS:

  • Management > SQL Server-Protokolle (Error Logs)
  • SQL Server-Agent > Fehlerprotokolle (Agent Error Logs)

Per T‑SQL lesen:

-- SQL Server Errorlog (aktuelles Log)
EXEC xp_readerrorlog 0, 1;  -- 1 = SQL Server

-- SQL Agent Log (aktuelles Log)
EXEC xp_readerrorlog 0, 2;  -- 2 = SQL Agent

-- optional Filter & Zeitraum
EXEC xp_readerrorlog
    0, 2, 'Failed', NULL, '2025-11-01', '2025-11-10', 'DESC';

Tipp: Mit

EXEC sp_cycle_errorlog;

kannst du das Errorlog rotieren (z. B. täglich per Job).


Warum ist die Ausgabe im Agent-Fenster abgeschnitten?

Die Job-Historie (msdb..sysjobhistory) speichert die Step-Meldungen nur bis ca. 4.000 Zeichen. SSMS zeigt daher oft nur den Anfang. Das ist der Grund, warum du im Agent-Fenster keine vollständige Ausgabe siehst.


So bekommst du die vollständige Job-Ausgabe

  1. In eine Datei loggen (empfohlen)
  • Job > Schritt > Erweitert (Advanced) > „Ausgabe in Datei“
  • Optional: „Ausgabe an vorhandene Datei anhängen“ aktivieren
  • Du kannst Tokens für dynamische Namen verwenden:
    E:\SQLAgentLogs\$(JOBNAME)_Step$(STEPID)_$(DATE)_$(TIME).txt
    

Per T‑SQL setzen:

EXEC msdb.dbo.sp_update_jobstep
  @job_name = N'Mein Job',
  @step_id = 1,
  @output_file_name = N'E:\SQLAgentLogs\$(JOBNAME)_Step$(STEPID)_$(DATE)_$(TIME).txt',
  @append_output = 1;
  1. In Tabelle loggen (für lange Ausgaben)
  • Job > Schritt > Erweitert > „In Tabelle protokollieren“ aktivieren
  • Optional „An vorhandene Protokolle anhängen“ aktivieren
  • Danach kannst du die Logs in msdb abfragen, z. B.:
-- Schritt-Logs (wenn "In Tabelle protokollieren" aktiviert war)
SELECT TOP (100)
       j.name,
       l.step_id,
       l.log_date,
       l.log -- i. d. R. NVARCHAR(MAX)
FROM msdb.dbo.sysjobstepslogs AS l
JOIN msdb.dbo.sysjobs AS j ON j.job_id = l.job_id
ORDER BY l.log_date DESC;
  1. Über sqlcmd/powershell ausführen und Output umleiten
  • SQLCMD: sqlcmd -S <Server> -E -i script.sql -o "E:\SQLAgentLogs\script_output.txt"
  • Den Agent-Step als „Betriebssystem (CmdExec)“-Schritt konfigurieren und so die komplette Ausgabe erfassen.
  1. Job-Historie-Einstellungen anpassen
  • SQL Server-Agent > Eigenschaften > Verlauf: Anzahl Einträge erhöhen, aber beachte: das hebt die 4.000‑Zeichen‑Grenze pro Step nicht auf.
  1. Während der Laufzeit „live“ Ausgaben erzwingen
  • In T‑SQL Steps hilft z. B.:
RAISERROR('Zwischenstand ...', 0, 1) WITH NOWAIT;

So siehst du Fortschritt früher; für die Vollständigkeit nutze trotzdem eine Datei/Tabelle.


Nützliche Abfragen rund um Agent-Jobs

Letzte Jobläufe mit (ggf. abgeschnittenen) Meldungen:

SELECT TOP (50)
       j.name,
       h.step_id,
       h.run_date, h.run_time,
       h.run_duration,
       h.run_status,   -- 0=Fehler, 1=Erfolg, 2=Abgebrochen, 3=Abgebrochen vom Benutzer, 4=Retry
       h.message
FROM msdb.dbo.sysjobhistory AS h
JOIN msdb.dbo.sysjobs AS j ON j.job_id = h.job_id
WHERE h.step_id > 0
ORDER BY h.instance_id DESC;

Zusammenfassung

  • Die vollständigen Server-/Agent-Logs sind als Dateien im MSSQL-Logordner (ERRORLOG, SQLAGENT.OUT).
  • Die Anzeige im Agent-Fenster ist der Natur nach gekürzt.
  • Für komplette Jobausgaben: „Ausgabe in Datei“ oder „In Tabelle protokollieren“ am Step aktivieren.
  • Bei Bedarf per xp_readerrorlog oder direkt in SSMS die Error-/Agent-Logs ansehen.

Wenn du magst, sag mir deine SQL Server-Version und ob du Windows oder Linux nutzt, dann gebe ich dir eine exakt passende Schritt-für-Schritt-Anleitung.