Ich versuche, eine Abfrage zu schreiben, die mir sagen wird, wie viel Zeit eine Wiederherstellung (voll oder Protokoll) auf SQL Server 2008 genommen hat.
Ich kann diese Abfrage ausführen, um herauszufinden, wie lange die Sicherung gedauert hat:
%Vor%Diese Abfrage sagt mir was wiederhergestellt wird, aber jetzt wie lange es dauerte:
%Vor% restorehistory
hat eine Spalte backup_set_id
, die auf msdb..backupset
verweist, aber das Start- und Enddatum für die Sicherung nicht die Wiederherstellung enthält.
Gibt es eine Idee, wo die Start- und Endzeit für Wiederherstellungen abgefragt werden kann?
Um die RESTORE DATABASE-Zeit zu finden, habe ich festgestellt, dass Sie diese Abfrage verwenden können:
%Vor% Der Nachteil ist, dass Sie zumindest auf meinem Testserver feststellen werden, dass EndTime
immer NULL ist.
Also habe ich eine zweite Frage gestellt, um zu versuchen, die Endzeit zu bestimmen. Zuallererst entschuldige ich mich, dass das ziemlich hässlich und verschachtelt ist.
Die folgende Abfrage geht davon aus:
RESTORE DATABASE
enthält, und die maximale Transaktion, die diesem Datensatz zugeordnet ist. Ich bin sicher, dass jemand das, was ich getan habe, wahrscheinlich nehmen und verfeinern kann, aber das scheint in meiner Testumgebung zu funktionieren:
%Vor%BEARBEITEN
Ich habe einige Änderungen an der Abfrage vorgenommen, da eine der Testdatenbanken die Groß- / Kleinschreibung betrifft und einige Datensätze verloren hat. Ich habe auch bemerkt, dass beim Wiederherstellen von der Platte, dass der DatabaseID
Null ist, ich das jetzt auch handle:
Mach es zu einem Job. Dann führe es als Job aus. Dann überprüfen Sie den Jobverlauf anzeigen. Dann schau dir die duration-Spalte an.
Während es läuft, können Sie etwas wie diese DMV überprüfen.
%Vor%Oder Sie können ein magisches Voodoo verwenden und das Transaktionsprotokoll in der folgenden Tabellenfunktion interpretieren. Die einzige Person, die ich kenne, um Informationen in diesem Protokoll zu verstehen, ist Paul Randal. Ich weiß, dass er manchmal Server Fault überprüft, aber nicht weiß, ob er StackOverflow wundert.
Wählen Sie * aus fn_dblog (NULL, NULL)
Hoffe, das hilft. Wenn Sie es schaffen und eine Lösung finden, teilen Sie uns dies bitte mit.
Viel Glück!
Tags und Links sql-server sql-server-2008 restore database-restore