it-swarm.com.de

Wann wurde eine Datenbank offline geschaltet?

Ich versuche herauszufinden, wann einige meiner SQL-Datenbanken offline geschaltet wurden.

Ich habe die Protokolle überprüft, konnte aber keine solchen Informationen finden und außerdem ist keine Standardablaufverfolgung aktiviert.

Ich habe nur eine Information, dass es früher einen DBA gab, der das offline geschaltet hat, aber keine E-Mails oder eine schriftliche Mitteilung als solche.

Können wir dazu eine Info finden?

bitte vorschlagen, danke!

9
KASQLDBA

Sie können alle diese Ereignisse, die sich im aktuellen Ereignisprotokollzyklus befinden, mit sp_readerrorlog Ermitteln:

EXEC sys.sp_readerrorlog @p1 = 0, @p2 = 1, @p3 = N'OFFLINE';

Sie können die Werte von @p1 Durchlaufen, wenn Sie sie nicht im aktuellen Ereignisprotokoll finden. Standardmäßig sollten Sie in der Lage sein, die aktuellen und vorherigen 6 Fehlerprotokolldateien zu lesen. Verwenden Sie daher 0-6 als Argumente, um so weit wie möglich zurückzukehren (auf meinem System konnte ich nicht 0/NULL zum Aggregieren über alle Protokolldateien hinweg (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 erhalten, 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 sp_readerrorlog Undokumentiert ist und nicht unterstützt wird viele Leute haben darüber geschrieben . 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 heißen ERRORLOG, ERRORLOG.1, ERRORLOG.2 Usw. Sie können die Dateien in einem einfachen Texteditor öffnen, um die Struktur zu sehen, obwohl ich vorsichtig wäre Informationen zum Öffnen der aktuell verwendeten Datei (ERRORLOG).

11
Aaron Bertrand

Wenn die Datenbank offline eingestellt wurde:

d.h.

alter database AdventureWorks2012
set offline;
go

Im SQL Server-Fehlerprotokoll wird tatsächlich eine protokollierte Nachricht angezeigt:

Setzen Sie die Datenbankoption OFFLINE für die Datenbank 'AdventureWorks2012' auf ON.

select *
from sys.messages
where language_id = 1033
and text like '%setting database option%for database%';

Nachrichten-ID 5084, wenn Sie Änderungen der Datenbankoptionen überwachen.

4
Thomas Stringer