2009-07-30 5 views
2

Das Problem ist folgendes:Alle Transaktionsprotokolle in SQL Server 2008

t0: Insert is made into my database 
t1: Delete is executed 
t2: Full backup is made 
t3: Transaction log backup is made 

Wie kann ich den gelöschten Datensatz nach t3 wiederherzustellen (die jetzt)? Ich möchte die Datenbank in einem Zustand zwischen t0 und t1. Das Protokolllevel war voll.

Edit: Ich habe bereits DBCC LOG (DB-Name, 3) ausgeführt, aber das Protokoll scheint abgeschnitten zu sein. Es gibt nur 10 Gegenstände, obwohl es Tausende sein müssen.

Antwort

4

Um das Protokoll wiederzugeben, starten Sie immer von einem vollständigen Protokoll, wenden Sie die Differentiale und dann die Protokollsicherungen an. Die Zeitlinie ist immer vorwärts von der vollständigen Sicherung, niemals rückwärts. Um nach t0 in den Zustand zu gelangen (dh den gelöschten Datensatz wiederherzustellen), starten Sie mit einer vollständigen Sicherung, die vor t0 genommen wurde, und wenden Sie dann die Protokollsicherungen mit Stopp bei t0 an.

+0

Kann ich auch alle Aktivitäten sehen, die zwischen t0 und t1 passiert sind? – usr

+1

Um die Aktivität zwischen t0 und t1 anzuzeigen, stoppen Sie die Protokollwiederherstellung zum Zeitpunkt t1. Siehe http://msdn.microsoft.com/en-us/library/ms179451.aspx –

3

Lance,

Das Transaktionsprotokoll ist nicht sehen Transaktionen entwickelt. Es ist nicht wirklich diese Art von Protokoll. Wenn Sie die Sicherung des Transaktionsprotokolls ausgeführt haben, hätte die Protokolldatei abgeschnitten, da die Informationen in einer Datei gesichert wurden.

Erwähnenswert ist auch, dass wenn Sie eine Datenbank in das vollständige Wiederherstellungsmodell einfügen, diese im einfachen Modus verbleibt, bis Sie eine vollständige Datenbanksicherung durchführen. Wenn daher vor t0 keine Sicherung durchgeführt wurde, können Sie nicht in diesen Zustand zurückkehren.

Rob

4

Obwohl keine ideale Lösung, können Sie versuchen, Datenbank-Backup in separate Datenbank wiederherstellen, Datenbanken vergleichen und notwendige Änderungen manuell vornehmen.

Eine andere Möglichkeit besteht darin, einen Transaktionsprotokollleser eines Drittanbieters wie ApexSQL Log zu verwenden.