Ich versuche nur, ausführlichere Informationen für eine fehlgeschlagene Wartungsplanaufgabe nachzuschlagen. Ich öffne den Viewer für Protokolldateien und aktiviere das Kontrollkästchen, um die Protokolle für meinen Wartungsplan anzuzeigen. Außerdem gibt es in diesem Beispiel keine aktiven Filter. Dann spiele ich das Wartespiel .....
Ich hatte fast 20 Minuten gebraucht, um die Protokolle anzuzeigen. Daher dachte ich, dass das Laden aller Protokolle ab dem Beginn dieser Serverzeit möglicherweise nur einige Zeit in Anspruch nimmt. Ich habe den Filter auf ca. 3 Tage reduziert, da das sowieso alles ist, was ich brauchte. Das ging schneller, aber es dauerte immer noch 4 Minuten, um es zu zeigen. Beachten Sie, dass ich zum ersten Mal auf meinem Computer versucht habe, diese Protokolle anzuzeigen, damit dies möglicherweise auch eine Rolle spielt. Ich habe auch versucht, die Protokolle direkt auf dem Server zu überprüfen, aber ähnliche Zeitergebnisse erhalten.
Ist das Par für den Kurs? Sollte ich damit rechnen, dass das Anzeigen der Protokolle eine solche Erfahrung ist? Gibt es etwas, das ich tun oder überprüfen sollte? Ich habe vor, das Protokollalter zu überprüfen und festzustellen, ob es gelöscht werden kann. Würde sich dies jedoch weiterhin auf das Anzeigen von Protokollen für einen kurzen Zeitraum von X Tagen auswirken?
DBCC LOGINFO
wird zum Anzeigen von VLFs im Transaktionsprotokoll verwendet, mit denen Sie es möglicherweise verwechselnxp_readerrorlog
. Es ist nicht so, dass Microsoft diese Dinge logisch macht, ich weiß.Antworten:
Ja, das Lesen von Protokollen im Protokolldatei-Viewer dauert lange. Ein paar Dinge, um das Problem zu beheben:
Versuchen Sie, xp_readerrorlog mit gefilterten Parametern zu verwenden, um genau die gewünschten Daten zu erhalten:
Auf diese Weise erhalten Sie nur die gewünschten Zeilen.
Wenn Sie so etwas häufig tun, führen Sie einen Job aus, um das Fehlerprotokoll regelmäßig (ich mag wöchentlich) zu durchlaufen, damit Sie nicht so viel durchsehen müssen. Stellen Sie außerdem sicher, dass Sie keine erfolgreichen Sicherungen oder erfolgreichen Anmeldungen im Fehlerprotokoll protokollieren.
quelle
Standardmäßig setzt SQL Server das Fehlerprotokoll nur beim Neustart der Instanz fort. Wenn Sie eine hervorragende Server-Betriebszeit haben (möglicherweise patchen und starten Sie nur einige Male pro Jahr neu), kann das Fehlerprotokoll ziemlich umfangreich werden (ich habe gesehen, dass es in bestimmten Situationen viele GB erreicht).
Das Fehlerprotokoll wird als Textdatei gespeichert. Das Öffnen im Protokoll-Viewer erfordert daher im Wesentlichen, dass SQL Server die gesamte Textdatei öffnet und analysiert. Wenn Sie jemals eine 10-GB-Textdatei geöffnet haben, wissen Sie, dass dies langsam sein kann.
Normalerweise habe ich einen Job, der einmal pro Woche über das SQL Server-Fehlerprotokoll rollt, sodass das Protokoll so klein bleibt, dass es schnell geöffnet werden kann - und weit genug zurückreicht, dass eine einzelne Datei das enthält, was ich benötige.
Führen Sie zum Speichern Ihres Protokolls einfach diese gespeicherte Prozedur aus (und planen Sie einen Agentenjob, der wöchentlich ausgeführt wird:
Die alten archivierten Protokolle werden weiterhin im Objekt-Explorer angezeigt:
Im Log Viewer können Sie mehrere Protokolle anzeigen:
Möglicherweise möchten Sie auch die Anzahl der Archivprotokolldateien begrenzen, die Sie auf Ihrem Server speichern. Klicken Sie dazu im Objekt-Explorer mit der rechten Maustaste auf den Ordner "SQL Server-Protokolle" und wählen Sie "Konfigurieren". Aktivieren Sie dann das Kontrollkästchen und legen Sie eine maximale Anzahl von Protokolldateien fest.
Sie sollten sich im Allgemeinen irren, wenn Sie dies höher einstellen, als Sie denken, dass Sie es brauchen. Wenn Sie jemals ein Problem haben, bei dem der Server plötzlich mehrmals neu gestartet wird oder der SQL Server-Dienst wiederholt wiederverwendet wird, wird das Fehlerprotokoll bei jedem Neustart erneut angezeigt, und Ihre Protokolle werden nicht so viele Wochen zurückgehen, wie Sie möchten.
Sie können die Protokollaufbewahrung auch über festlegen
xp_instance_regwrite
. Im folgenden Beispiel wird dieser Wert so eingestellt, dass 10 Fehlerprotokolle beibehalten werden:quelle
Sie sollten auf jeden Fall Ihr SQL-Fehlerprotokoll und die SQL Agent-Fehlerprotokolle wie im obigen Kommentar @AMtwo vorgeschlagen rollen.
Da die Frage das Lesen des Wartungsplanprotokolls betraf, werde ich erklären, wie Sie die Größe überschaubar und schnell geöffnet halten können.
Für die Wartungsplanprotokollierung möchten Sie bei jeder Ausführung des Wartungsplans eine neue Datei erstellen.
Klicken Sie auf dieses Symbol und Sie erhalten das folgende Fenster. "Neue Datei erstellen" sollte die Standardeinstellung sein und dies bestätigen. Aktivieren Sie nicht "An Datei anhängen", da dadurch eine einzige Datei für die gesamte Ausführung erstellt wird.
Sie können eine andere Wartungsaufgabe ausführen, um Protokolldateien zu bereinigen, die älter als xx Tage sind, um ein Auffüllen der Festplatte zu vermeiden.
quelle
Wartungspläne generieren ihre eigenen Protokolldateien, wenn Sie diese Option auswählen. Beim Betrachten des MP-Verlaufs wird aus [msdb]. [Dbo]. [Sysmaintplan_log] und [msdb]. [Dbo]. [Sysmaintplan_logdetail] gelesen, nicht aus diesen Textdateien. Löschen Sie dies mit einer Aufgabe zur Verlaufsbereinigung, da dadurch die Tabellen und Dateien bereinigt werden.
SQL Server ERRORLog und Agentlog sollten ordnungsgemäß verwaltet werden, MP ist jedoch eine separate Konversation / Anstrengung
In der großen MS-Tradition ... keine Indizes für diese Tabellen, außer Clustered auf [msdb]. [Dbo]. [Sysmaintplan_log]
quelle