Sie können alle diese Ereignisse im aktuellen Ereignisprotokollzyklus ermitteln, indem Sie Folgendes verwenden sp_readerrorlog
:
EXEC sys.sp_readerrorlog @p1 = 0, @p2 = 1, @p3 = N'OFFLINE';
Sie können die Werte von durchlaufen, @p1
wenn Sie sie nicht im aktuellen Ereignisprotokoll finden. Standardmäßig sollten Sie in der Lage sein , die aktuellen und vorherige 6 Fehlerprotokolldateien zu lesen, verwenden Sie so 0-6 als Argumente sich wieder so weit wie möglich gehen (auf meinem System konnte ich nicht bekommen 0
/ NULL
über alle Log - Dateien zu aggregieren; YMMV ).
Wird so etwas zurückgeben:
LogDate ProcessInfo Text
------------- ----------- ---------------------------------------------------------
yyyy-mm-dd... spid72 Setting database option OFFLINE to ON for database 'foo'.
Es besteht natürlich die Möglichkeit, dass das Fehlerprotokoll so gut gefüllt wird, dass die Ereignisse vor dem aktuellen Satz von Fehlerprotokollen aufgetreten sind. In diesem Fall haben Sie kein Glück. Um in Zukunft einen längeren Verlauf zu gewährleisten, können Sie die Anzahl der gespeicherten Fehlerprotokolle ändern. Erweitern Sie im Objekt-Explorer die Option Verwaltung, klicken Sie mit der rechten Maustaste auf SQL Server-Protokolle und wählen Sie Konfigurieren. Dort können Sie die Einstellungen für das Recycling von Fehlerprotokolldateien ändern, einschließlich der Beibehaltung der vorherigen 99 Dateien. Siehe auch diese Antwort .
Beachten Sie, dass dies nicht sp_readerrorlog
dokumentiert und nicht unterstützt wird, obwohl viele Leute darüber geschrieben haben . Am Ende sind die Fehlerprotokolldateien nur reine Textdateien, sodass Sie Ihre eigene PowerShell, CLR usw. schreiben können, die nur die Dateien analysiert und dieselben Informationen zurückgibt. Sie können bestimmen, wo sich die Fehlerprotokolldateien für diese Instanz befinden, indem Sie:
SELECT SERVERPROPERTY('ErrorLogFileName');
Die Dateien werden benannt werden ERRORLOG
, ERRORLOG.1
, ERRORLOG.2
usw. Sie können die Dateien in einem einfachen Texteditor gehen und öffnen Sie die Struktur , um zu sehen, ob ich die aktuelle Datei in Gebrauch zu öffnen (vorsichtig sein würde ERRORLOG
).
OFFLINE
. Istoffline
eigentlich der Status insys.databases
?Wenn die Datenbank offline eingestellt wurde:
dh
Im SQL Server-Fehlerprotokoll wird tatsächlich eine protokollierte Nachricht angezeigt:
Nachrichten-ID 5084, wenn Sie Änderungen der Datenbankoptionen überwachen.
quelle