sql-server - the - sql transaction log auslesen



Stellen Sie die SQL Server-Datenbank ohne Transaktionsprotokoll wieder her (4)

.bak angesichts einer SQL Server 2008- .bak Datei eine Möglichkeit, die .bak nur aus der .bak Datei ohne das Transaktionslog wiederherzustellen?

Der Grund, warum ich frage, ist, dass die Transaktionsprotokolldatei dieser Datenbank sehr groß ist - sie überschreitet den verfügbaren Speicherplatz.

Ich habe kein Interesse am Transaktionsprotokoll und kein Interesse an unvollständigen Transaktionen. Normalerweise würde ich das Protokoll einfach auf null reduzieren, sobald ich die Datenbank wiederhergestellt habe. Dies ist jedoch nicht hilfreich, wenn ich nicht genügend Speicherplatz für die Erstellung des Protokolls habe.

Was ich brauche, ist eine Möglichkeit, SQL Server .bak , nur die Daten aus der .bak Datei wiederherzustellen, nicht das Transaktionsprotokoll. Gibt es eine Möglichkeit, dies zu tun?

Beachten Sie, dass ich keine Kontrolle über die Generierung der .bak Datei habe - sie stammt von einer externen Quelle. Das Verkleinern des Transaktionsprotokolls vor dem Erzeugen der .bak Datei ist keine Option.


Answer #1

Das Transaktionsprotokoll ist ein wesentlicher Bestandteil der Sicherung. Sie können SQL Server nicht anweisen, das Transaktionsprotokoll zu ignorieren, da es nicht möglich ist, die Transaktionsprotokolldatei gleichzeitig wiederherzustellen und zu verkleinern. Sie können jedoch einen Blick auf DBA post werfen, um den Prozess zu hacken, obwohl dies überhaupt nicht empfohlen wird

Alternativ können Sie auch Tools von Drittanbietern zum Wiederherstellen ausprobieren, insbesondere einen virtuellen Wiederherstellungsprozess, der viel Platz und Zeit sparen kann. Testen Sie ApexSQL Restore , RedGate Virtual Restore und Idera Virtual Database.

Haftungsausschluss: Ich arbeite für ApexSQL als Support Engineer


Answer #2

Dies funktioniert möglicherweise nicht, da Sie keine Kontrolle über die Generierung der .bak-Datei haben. Wenn Sie jedoch Ihre Quelle davon überzeugen können, die Datenbank zu trennen und Ihnen eine Kopie der .mdf-Datei direkt zu senden, können Sie dann die .mdf und anhängen Ihr Server erstellt automatisch eine neue leere Transaktionsprotokolldatei.

Siehe sp_detach_db und sp_attach_db (oder CREATE DATABASE database_name FOR ATTACH, abhängig von Ihrer SQL Server-Version).


Answer #3

Ich weiß, dass dies ein alter Thread ist, aber ich stolperte darüber, während ich Probleme mit der Transaktionsprotokollkorruption hatte. So habe ich es ohne Datenverlust umgangen (ich hatte allerdings Ausfallzeit!)

Folgendes habe ich getan: -

Stoppen Sie den SQL Server-Instanzdienst, und erstellen Sie eine Kopie der MDF-Datei der betroffenen Datenbank und der LDF-Datei (wenn Sie eine .ndf-Datei haben, kopieren Sie diese ebenfalls!). Um sicherzugehen, können Sie diese immer wieder zurücksetzen, wenn dies nicht der Fall ist arbeite nicht für dich

Starten Sie den Dienst neu.

Melden Sie sich bei SQL Management Studio an, ändern Sie den Datenbankmodus in "Einfach" und führen Sie dann eine vollständige Sicherung durch.

Ändern Sie den Datenbanktyp erneut und erstellen Sie erneut eine vollständige Sicherung und anschließend eine Transaktionsprotokollsicherung.

Trennen Sie die Datenbank.

Klicken Sie mit der rechten Maustaste auf Datenbanken und dann auf Wiederherstellen, wählen Sie den Datenbanknamen aus der Dropdown-Liste aus, wählen Sie die später erstellte vollständige Datenbanksicherung (nicht die aus dem einfachen Modus stammende) aus, und wählen Sie auch die Transaktionsprotokollsicherung aus.

Klicken Sie auf "Wiederherstellen" und es sollte alles zurückgesetzt werden, ohne die Protokolldateien zu beschädigen.

Dies funktionierte für mich ohne Fehler und meine Sicherungen funktionierten danach korrekt und es gab keine Transaktionsprotokollfehler mehr.


Answer #4

Nein, das Transaktionsprotokoll ist erforderlich.

Option 1:

Eine Option kann sein, sie auf einem Computer wiederherzustellen, auf dem Sie nicht genügend Speicherplatz haben. Dann ändern Sie bei der wiederhergestellten Kopie die Protokollierung entweder in Massenprotokollierung oder in "Einfach", verkleinern Sie die Protokolle, führen Sie eine weitere Sicherungsoperation für diese neue Kopie durch und verwenden Sie diese dann zum Wiederherstellen auf dem Zielcomputer mit dem nun wesentlich kleineren Transaktionsprotokoll.

Option 2:

Alternativ könnte der Kontakt an der externen Quelle möglicherweise das Transaktionsprotokoll verkleinern, bevor es an Sie gesendet wird (dies kann möglicherweise nicht funktionieren, wenn das Protokoll aufgrund einer großen Anzahl von Transaktionen groß ist).

Hier finden Sie Dokumente zum Befehl zum Verkleinern der Protokolldatei.





transaction-log