it-swarm.com.de

Wie kann ich voll SQL Job History ansehen?

In SQL Server Management Studio werden beim Anzeigen des Verlaufs für einen SQL-Auftrag nur die letzten 50 Ausführungen des Auftrags angezeigt.

Wie kann ich ein vollständiges Protokoll jeder Ausführung eines SQL-Jobs anzeigen, seit er auf dem Server erstellt wurde?

26
Curt

Das SQL Server-Auftragssystem begrenzt die Gesamtzahl der Auftragsprotokolleinträge pro Auftrag und im gesamten System. Diese Informationen werden in der MSDB-Datenbank gespeichert.

Natürlich können Sie nicht mehr zurückkehren und Informationen anzeigen, die seitdem verworfen wurden, aber Sie können die SQL Server Agent -Eigenschaften ändern und die Anzahl der Einträge erhöhen, die von nun an aufgezeichnet werden.

In den Eigenschaften des SQL Server-Agenten:

  • Wählen Sie die Seite Verlauf
  • Passen Sie die maximale Protokollgröße (Zeilen) des Auftragsverlaufs und die maximale Anzahl von Auftragsverlaufszeilen pro Auftrag an, oder ändern Sie die Art und Weise, in der Auftragsverlaufsdaten basierend auf ihrem Alter gelöscht werden.

Es gibt Ihnen nicht Ihre Geschichte zurück, aber es hilft bei Ihren zukünftigen Fragen!

38
Jeremy Smyth

Ich bin mir ziemlich sicher, dass der Auftragsverlauf irgendwo in einer dedizierten Datenbank in SQL Server selbst gespeichert ist. In diesem Fall können Sie mit SQL Server Profiler die von SQL Server Management Studio gesendeten SQL-Anweisungen abfangen und die Namen von Tabellen usw. ermitteln.

4
Anton Gogolev

Ihr Ergebnis hängt von ein paar Dingen ab.

  1. Wie Sie die Einstellungen "Größe des Auftragsprotokollverlaufs begrenzen" und "Agentenverlauf automatisch entfernen" festgelegt haben [Klicken Sie mit der rechten Maustaste auf SQL Agent | Eigenschaften | Geschichte] und
  2. gibt an, ob Sie in einem Wartungsplan (oder auf diese Weise manuell) eine Aufgabe zum Bereinigen des Verlaufs ausführen. Die MP Task führt das msdb.dbo.sp_purge_jobhistory gespeicherte Prozedur mit einem "ältesten Datum" -Parameter, der dem von Ihnen ausgewählten Zeitraum entspricht.
3

Sie können die temporäre Tabelle verwenden, um die Aufbewahrung von Daten zu ändern. Bestehendes Jobprotokoll in Azure SQL Managed Instance :

ALTER TABLE [msdb].[dbo].[sysjobhistory]
ADD StartTime DATETIME2 NOT NULL DEFAULT ('19000101 00:00:00.0000000')

ALTER TABLE [msdb].[dbo].[sysjobhistory]
ADD EndTime DATETIME2 NOT NULL DEFAULT ('99991231 23:59:59.9999999')

ALTER TABLE [msdb].[dbo].[sysjobhistory]
ADD PERIOD FOR SYSTEM_TIME (StartTime, EndTime)

ALTER TABLE [msdb].[dbo].[sysjobhistory]
ADD CONSTRAINT PK_sysjobhistory PRIMARY KEY (instance_id, job_id, step_id)

ALTER TABLE [msdb].[dbo].[sysjobhistory]
SET(SYSTEM_VERSIONING = ON (HISTORY_TABLE = [dbo].[sysjobhistoryall],
    DATA_CONSISTENCY_CHECK = ON, HISTORY_RETENTION_PERIOD = 1 MONTH))

select * from msdb.dbo.sysjobhistoryall

Dieser Ansatz erlaubt es, den Aufbewahrungszeitraum als Zeit zu definieren (hier 1 MONTH) anstelle der maximalen Zeilenanzahl pro Job/xaximale Protokollgröße des Jobverlaufs (Zeilen).

0
Lukasz Szozda