Anhängen / Trennen vs. Sichern / Wiederherstellen


14

Ich muss die Datenbank (als Ganzes) auf einen anderen Server übertragen, um eine doppelte Datenbank zu erstellen und eine andere Testumgebung einzurichten.

Ich habe zwei Möglichkeiten:

  1. Erstellen Sie eine vollständige Sicherung auf dem Quellserver und stellen Sie sie auf dem Zielserver wieder her.
  2. Am Quellserver trennen / am Zielserver anhängen.

Welche Vor- und Nachteile haben die beiden Lösungen gemäß meinen Anforderungen?

Ich verwende SQL Server 2008 Enterprise.

Antworten:


12

Das Sichern / Wiederherstellen sollte normalerweise die Methode Ihrer Wahl sein. In den meisten Situationen ist dies schneller.

Sie können es konsistent verwenden, auch zum Testen der Produktion.

Siehe auch diese verwandte Frage, in der das Sichern / Wiederherstellen gegen Trennen / Anhängen erwähnt wird:

SQL Server Migration-Wiederherstellungssicherung im Vergleich zu Kopierdaten und Protokolldateien

Stellen Sie sicher, dass Sie die WITH COPY_ONLYOption zur Sicherung hinzufügen , damit die vorhandene Sicherungskette des Wartungsplans nicht unterbrochen wird.


SQL 2008 Enterprise führte die Sicherungskomprimierung ein. Es besteht die Möglichkeit, dass das komprimierte Backup deutlich kleiner als 100 GB ist und daher schneller geschrieben, kopiert und geladen werden kann als das Kopieren über die MDF / LDFs.
Thomas Rushton

6
  1. Durch das Trennen der Datenbank wird diese offline geschaltet. Erstellen Sie eine Sicherungskopie, wenn die Datenbank online bleiben soll, während Sie sie auf einen anderen Server kopieren.
  2. Das Verschieben und Wiederherstellen einer Sicherungsdatei (.bak) ist möglicherweise einfacher / einfacher als das Verschieben und Anhängen mehrerer mdf- / ldf-Dateien (wie beim Trennen der Datenbank).
  3. Auf dem Papier ist das Trennen / Anhängen einer Datenbank möglicherweise technisch schneller, in der Praxis ist das Sichern / Wiederherstellen jedoch wahrscheinlich schneller und einfacher. Wenn Sie eine Datenbank trennen, müssen Sie zuerst die ursprüngliche Datenbank offline schalten (trennen Sie alle und alles), und dann ist die Datenbank nicht verfügbar, bis Sie erneut eine Verbindung herstellen. Sie müssen auch alle Dateien im Auge behalten, während bei einer Sicherung alle Dateien gruppiert werden.

Wenn Sie sich für die Sicherung / Wiederherstellung entscheiden, verwenden Sie während der Sicherung die Option WITH COPY_ONLY, um sicherzustellen, dass die Sicherungskette eines vorhandenen Wartungsplans nicht unterbrochen wird.

Eine .bak-Datei wird gut komprimiert. Wenn Sie sich also für eine Sicherungskopie entscheiden, können Sie durch Komprimieren der Sicherungskopie vor dem Verschieben Übertragungszeit sparen.


4

Ich würde für die Sicherung / Wiederherstellung gehen, da es die ursprüngliche Datenbank in einem Betriebszustand verlässt.

Vor allem, wenn Sie eine "Production to Test" -Konvertierung durchführen, ist es wichtig, dass die Produktionsdatenbank online bleibt.

Das Sichern / Wiederherstellen ist auch eine sicherere Option: Was passiert, wenn die Datei zwischen dem Start der Trennung, der Kopie, dem Anhängen usw. beschädigt wird? Zumindest wenn Sie eine Sicherung durchführen und die Datei beschädigt wird, können Sie von vorne beginnen. Wenn dies bei einer Trennung der Fall ist, ist Ihre Datenbank nicht mehr vorhanden.

Backup / Restore ist für mich (obwohl es mehr ein Gefühl als alles andere ist) "alltägliche Arbeit", wohingegen das Trennen / Anhängen etwas ist, was Sie unter außergewöhnlichen Umständen tun. Frag mich aber nicht, woher ich diese Idee habe ;-)


1

Ich hatte schon immer Probleme mit dem "Wiederherstellen" -Teil von Backup / Restore. Ich kann keine Details zitieren, da ich es irgendwann aufgegeben habe und seitdem nicht mehr weiterkomme / kopiere / anhänge.

Das Einzige, was Sie bei der Trennung tun müssen, ist, dass Sie sicherstellen müssen, dass das DBMS nicht auch die Datenbank löscht. Ist das passiert, und es ist kein schöner Anblick.


5
Das DBMS löscht die Datenbank beim Trennen nicht. In welcher Art von Geschäft befinden Sie sich, wenn beim Trennen von Löschvorgängen und beim Wiederherstellen Probleme auftreten?
25.

@Will: sp_detach_db ist nicht DROP: 2 separate und nicht verwandte Befehle, die separat ausgegeben werden müssen. Eine getrennte Datenbank kann nicht über SQL DROPPED oder Dateien gelöscht werden. Eine abgelegte Datenbank kann nicht getrennt werden. Beim Trennen ist die Option "Dateien löschen" weder über Code noch über SSMS verfügbar. Daher kann ich meinen ersten Kommentar begründen, da Sie die Option zum Löschen der Dateien in DROP absichtlich auswählen müssen. Not
detach

1

Ich empfehle eine copy_onlySicherung mit dieser Methode von einer DOS-Shell (damit Sie die Transaktionsprotokolle nicht unterbrechen) :

Führen Sie aus dem C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\BackupVerzeichnis:

backup.bat SQLDBNAME

Wo backup.batenthält (Zeilenumbruch zur besseren Lesbarkeit hinzugefügt) :

sqlcmd.exe -U username -P xxxxxxx -S SQL-SERVERNAME 
    -Q "BACKUP DATABASE %1 TO DISK = '%1_COPYONLY.BAK' WITH COPY_ONLY,INIT;"
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.