Wenn wir die Sicherung starten, lassen wir normalerweise keine Änderungen zu, oder die Datenbank ist nicht zugänglich. Ich meine, die Datenbank befindet sich im Einzelbenutzermodus, aber ich möchte die Sicherung starten und die Datenbank zur Verwendung freigeben. Sobald ich die Sicherung starte, möchte ich nicht, dass die laufenden Änderungen in die Sicherungsdatei geschrieben werden. Ich möchte wissen, wie ich dies in Microsoft SQL Server 2012 erreichen kann. Bitte unterstützen Sie mich.
Lassen Sie mich zuerst mein Problem erklären. Derzeit setze ich die Datenbank auf den Einzelbenutzermodus, bis die Sicherung abgeschlossen ist. Dieser Modus dient meinem Zweck, die Datenänderungen während der Sicherung zu vermeiden. Meine Anwendung ist jedoch an mehrere Datenbanken gebunden (jede Datenbank ist miteinander verknüpft, und es gibt Variablen, die monatlich erstellt werden). Das Sichern all dieser Datenbanken ist daher zu einem mühsamen Prozess geworden, und was noch wichtiger ist, ich muss die Benutzer während der Sicherung vom System fernhalten.
Daher suche ich nach einem Sicherungsmechanismus, der die unten genannten Anforderungen erfüllt.
- Starten Sie die Sicherung aller Datenbankdaten gleichzeitig und geben Sie die Datenbank zur Verwendung frei.
- Da Datenbanken miteinander verknüpft sind, möchte ich, dass die Datenkonsistenz in Sicherungsdateien erhalten bleibt. Aufgrund dieser Datenkonsistenzanforderung möchte ich nicht, dass laufende Änderungen in meine Sicherungsdatei übernommen werden.
Alles was ich will ist - Backup aller DBS zu einem bestimmten Zeitpunkt.
quelle
Antworten:
Ich gehe davon aus, dass Ihre Aufgabe darin besteht, eine Reihe von Sicherungen zu erstellen, in denen Sie alle an einem einzigen statischen Punkt (keine offenen Transaktionen) wiederherstellen können (alle synchron). Ähnlich wie ein Ruhepunkt in DB2 für Sie. Leider gibt es in SQL Server nichts, was genau das tut. Angenommen, Ihre Datenbanken befinden sich im vollständigen Wiederherstellungsmodus, können Sie etwas Ähnliches tun.
Sie können eine einzelne
MARKED
Transaktion für alle Datenbanken gleichzeitig erstellen . Anschließend erstellen Sie eine Transaktionsprotokollsicherung für jede Datenbank. Angenommen, Sie halten mit Ihren Protokollsicherungen Schritt (was Sie sowieso sein sollten). Protokollsicherungen dauern nicht lange. Und es besteht keine Notwendigkeit, jemanden daran zu hindern, im System zu sein (außer vielleicht lange genug, um Ihre markierte Transaktion zu erstellen).Wenn Sie zu diesem Zeitpunkt eine Wiederherstellung durchführen müssen, führen Sie eine
RESTORE STOPBEFOREMARK
für jede Ihrer Datenbanken durch. Dadurch werden alle Datenbanken an demselben Punkt wiederhergestellt (basierend auf Ihrer Transaktion). Hinweis: Es gibt auch ein STOPATMARK, wenn Sie diese Transaktion einschließen möchten.Wenn Sie ein Beispiel möchten, habe ich eines im obigen Link zusammen mit einigen zusätzlichen Informationen.
Mir ist klar, dass dies Ihre Frage nicht genau beantwortet, aber hoffentlich Ihr Problem löst.
quelle
Ihre Frage ähnelt der von mir beantworteten Frage: Sichern und Wiederherstellen von 10-20 SQL Server-Datenbanken in einem synchronen Zustand?
Angenommen, Ihr Datenbankwiederherstellungsmodell ist VOLL, sollten Sie eine vollständige Sicherung erstellen und dann Markierte Transaktionen verwenden .
Lass uns deine Mythen entlarven ...
Aus Backup-Mythen (Wir empfehlen Ihnen dringend, alle Backup-Mythen zu lesen) :
Mit markierten Transaktionen können Sie eine konsistente LOG-Sicherung erstellen und diese mithilfe von wiederherstellen
RESTORE ... WITH STOPBEFOREMARK = '<mark_name>'
Beachten Sie, dass markierte Transaktionen für alle Datenbanken in der Instanz auch in der
dbo.logmarkhistory
Tabelle in derMSDB
Datenbank aufgezeichnet werden.quelle
Für weitere Informationen: https://blogs.technet.microsoft.com/letsdothis/2013/11/06/backup-multiple-sql-databases-in-a-single-swoop/
quelle