Vorbereiten einer sekundären Datenbank auf eine Always On-Verfügbarkeitsgruppe
Gilt für: SQL Server
In diesem Thema wird erläutert, wie eine Datenbank in SQL Server mithilfe von SQL Server Management Studio, Transact-SQL oder PowerShell für eine Always On-Verfügbarkeitsgruppe in vorbereitet wird. Das Vorbereiten einer Datenbank erfolgt in zwei Schritten:
- Stellen Sie mit RESTORE WITH NORECOVERY die neuesten Datenbank- und Protokollsicherungen für jede primäre Datenbank und nachfolgende Protokollsicherungen auf jeder Serverinstanz wieder her, die das sekundäre Replikat hostet.
- Verknüpfen Sie die wiederhergestellte Datenbank mit der Verfügbarkeitsgruppe.
Tipp
Wenn Sie eine vorhandene Protokollversandkonfiguration haben, können Sie möglicherweise die primäre Datenbank für den Protokollversand zusammen mit mindestens einer sekundären Datenbank in ein primäres Replikat einer Verfügbarkeitsgruppe und mindestens ein sekundäres Replikat konvertieren. Weitere Informationen finden Sie weiter unten in diesem Thema im Abschnitt Voraussetzungen für das Migrieren vom Protokollversand zu Always On-Verfügbarkeitsgruppen (SQL Server).
Voraussetzungen und Einschränkungen
Stellen Sie sicher, dass das System, auf dem die Datenbank gespeichert werden soll, einen Datenträger mit ausreichend Speicherplatz für die sekundären Datenbanken besitzt.
Der Name der sekundären Datenbank muss dem Namen der primären Datenbank entsprechen.
Verwenden Sie RESTORE WITH NORECOVERY für jeden Wiederherstellungsvorgang.
Wenn sich die sekundäre Datenbank unter einem anderen Dateipfad (einschließlich des Laufwerkbuchstabens) als die primäre Datenbank befinden muss, muss vom Wiederherstellungsbefehl auch die WITH MOVE-Option für alle Datenbankdateien verwendet werden, um für sie den Pfad der sekundären Datenbank anzugeben.
Wenn Sie die Datenbank dateigruppenweise wiederherstellen, stellen Sie sicher, dass Sie die vollständige Datenbank wiederherstellen.
Nach dem Wiederherstellen der Datenbank müssen Sie alle seit der letzten wiederhergestellten Datensicherung erstellten Protokollsicherungen wiederherstellen (WITH NORECOVERY).
Empfehlungen
Bei eigenständigen Instanzen von SQL Serversollte der Dateipfad (einschließlich des Laufwerkbuchstabens) einer sekundären Datenbank nach Möglichkeit mit dem Pfad der entsprechenden primären Datenbank übereinstimmen. Grund: Wenn beim Erstellen einer sekundären Datenbank die Datenbankdateien verschoben werden, tritt beim späteren Hinzufügen einer Datei auf der sekundären Datenbank möglicherweise ein Fehler auf und bewirkt, dass die sekundäre Datenbank angehalten wird.
Vor dem Vorbereiten der sekundären Datenbanken sollten Sie unbedingt geplante Protokollsicherungen auf den Datenbanken in der Verfügbarkeitsgruppe anhalten, bis die Initialisierung sekundärer Replikate abgeschlossen ist.
Sicherheit
Beim Sichern einer Datenbank wird die TRUSTWORTHY-Datenbankeigenschaft auf OFF festgelegt. Deshalb ist TRUSTWORTHY bei einer neu wiederhergestellten Datenbank immer auf OFF festgelegt.
Berechtigungen
Mitglieder der festen Serverrolle sysadmin und der festen Datenbankrollen db_owner und db_backupoperator verfügen standardmäßig über BACKUP DATABASE- und BACKUP LOG-Berechtigungen. Weitere Informationen finden Sie unter BACKUP (Transact-SQL).
Wenn die Datenbank, die wiederhergestellt wird, auf der Serverinstanz nicht vorhanden ist, erfordert die RESTORE-Anweisung CREATE DATABASE-Berechtigungen. Weitere Informationen finden Sie unter RESTORE (Transact-SQL).
Verwenden Sie SQL Server Management Studio
Hinweis
Wenn die Sicherungs- und Wiederherstellungsdateipfade sowohl auf der Serverinstanz, auf der das primäre Replikat gehostet wird, als auch auf jeder Instanz identisch sind, auf der ein sekundäres Replikat gehostet wird, können Sie sekundäre Replikatdatenbanken mithilfe des Assistenten für neue Verfügbarkeitsgruppen, des Assistenten zum Hinzufügen von Replikaten zu Verfügbarkeitsgruppenoder des Assistenten zum Hinzufügen von Datenbanken zu Verfügbarkeitsgruppenerstellen.
So bereiten Sie eine sekundäre Datenbank vor
Wenn Sie noch keine aktuelle Sicherung der primären Datenbank besitzen, erstellen Sie neue vollständige oder differenzielle Datenbanksicherung. Es wird empfohlen, diese Sicherung und nachfolgende Protokollsicherungen auf der empfohlenen Netzwerkfreigabe zu speichern.
Erstellen Sie mindestens eine neue Protokollsicherung der primären Datenbank.
Hinweis
Eine Transaktionsprotokollsicherung ist möglicherweise nicht erforderlich, wenn eine Transaktionsprotokollsicherung noch nicht in der Datenbank im primären Replikat erfasst wurde. Microsoft empfiehlt, dass Sie jedes Mal eine Transaktionsprotokollsicherung durchführen, wenn eine neue Datenbank mit der Verfügbarkeitsgruppe verknüpft wird.
Stellen Sie auf der Serverinstanz, die das sekundäre Replikat hostet, die vollständige Datenbanksicherung der primären (und optional eine differenzielle Sicherung) und anschließend nachfolgende Protokollsicherungen wieder her.
Aktivieren Sie auf der Seite RESTORE DATABASE-Optionen die Option Leave the database non-operational, and do not roll back the uncommitted transactions. Additional transaction logs can be restored. (RESTORE WITH NORECOVERY) (Datenbank nicht betriebsbereit belassen und kein Rollback für Transaktionen ohne Commit ausführen. Zusätzliche Transaktionsprotokolle können wiederhergestellt werden. (RESTORE WITH NORECOVERY).).
Wenn sich die Dateipfade der primären Datenbank und der sekundären Datenbank unterscheiden, z. B. wenn sich die primäre Datenbank auf Laufwerk F: befindet, bei der Serverinstanz, die das sekundäre Replikat hostet, jedoch das Laufwerk F: fehlt, schließen Sie die MOVE-Option in die WITH-Klausel ein.
Um die Konfiguration der sekundären Datenbank abzuschließen, müssen Sie die sekundäre Datenbank mit der Verfügbarkeitsgruppe verknüpfen. Weitere Informationen finden Sie unter Verknüpfen einer sekundären Datenbank mit einer Verfügbarkeitsgruppe (SQL Server).
Hinweis
Informationen zum Ausführen dieser Sicherungs- und Wiederherstellungsoptionen finden Sie weiter unten in diesem Abschnitt unter Verwandte Sicherungs- und Wiederherstellungsaufgaben
Verwandte Sicherungs- und Wiederherstellungsaufgaben
So erstellen Sie eine Datenbanksicherung
Erstellen einer vollständigen Datenbanksicherung (SQL Server)
Erstellen einer differenziellen Datenbanksicherung (SQL Server)
So erstellen Sie eine Protokollsicherung
So stellen Sie Sicherungen wieder her
Wiederherstellen einer differenziellen Datenbanksicherung (SQL Server)
Wiederherstellen einer Transaktionsprotokollsicherung (SQL Server)
Wiederherstellen einer Datenbank an einem neuen Speicherort (SQL Server)
Verwenden von Transact-SQL
So bereiten Sie eine sekundäre Datenbank vor
Hinweis
Ein Beispiel für diese Prozedur finden Sie weiter oben in diesem Thema Beispiel (Transact-SQL).
Wenn Sie keine aktuelle vollständige Sicherung der primären Datenbank besitzen, stellen Sie eine Verbindung mit der Serverinstanz her, die das primäre Replikat hostet, und erstellen Sie eine vollständige Datenbanksicherung. Es wird empfohlen, diese Sicherung und nachfolgende Protokollsicherungen auf der empfohlenen Netzwerkfreigabe zu speichern.
Stellen Sie auf der Serverinstanz, die das sekundäre Replikat hostet, die vollständige Datenbanksicherung der primären (und optional eine differenzielle Sicherung) und anschließend alle nachfolgenden Protokollsicherungen wieder her. Verwenden Sie WITH NORECOVERY für jeden Wiederherstellungsvorgang.
Wenn sich die Dateipfade der primären Datenbank und der sekundären Datenbank unterscheiden, z. B. wenn sich die primäre Datenbank auf Laufwerk F: befindet, bei der Serverinstanz, die das sekundäre Replikat hostet, jedoch das Laufwerk F: fehlt, schließen Sie die MOVE-Option in die WITH-Klausel ein.
Wurden seit der erforderlichen Protokollsicherung zusätzliche Protokollsicherungen in der primären Datenbank vorgenommen, müssen Sie diese ebenfalls auf die Serverinstanz kopieren, die das sekundäre Replikat hostet, und alle Protokollsicherungen auf die sekundäre Datenbank anwenden, beginnend mit der frühesten und mithilfe von RESTORE WITH NORECOVERY.
Hinweis
Eine Protokollsicherung ist nicht vorhanden, wenn die primäre Datenbank erst kürzlich erstellt wurde und bisher keine Protokollsicherung vorgenommen wurde oder wenn das Wiederherstellungsmodell soeben von SIMPLE in FULL geändert wurde.
Um die Konfiguration der sekundären Datenbank abzuschließen, müssen Sie die sekundäre Datenbank mit der Verfügbarkeitsgruppe verknüpfen. Weitere Informationen finden Sie unter Verknüpfen einer sekundären Datenbank mit einer Verfügbarkeitsgruppe (SQL Server).
Hinweis
Informationen zum Ausführen dieser Sicherungs- und Wiederherstellungsoptionen finden Sie weiter unten in diesem Thema unter Verwandte Sicherungs- und Wiederherstellungsaufgaben
Beispiel für Transact-SQL
Im folgenden Beispiel wird eine sekundäre Datenbank vorbereitet. In diesem Beispiel wird die AdventureWorks2022
-Beispieldatenbank verwendet, in der standardmäßig das einfache Wiederherstellungsmodell verwendet wird.
Damit die
AdventureWorks2022
-Datenbank verwendet werden kann, ändern Sie sie so, dass das vollständige Wiederherstellungsmodell verwendet wird.USE master; GO ALTER DATABASE MyDB1 SET RECOVERY FULL; GO
Nach dem Ändern des Wiederherstellungsmodells der Datenbank von SIMPLE in FULL erstellen Sie eine vollständige Sicherung, die zum Erstellen der sekundären Datenbank verwendet werden kann. Da das Wiederherstellungsmodell soeben geändert wurde, wird die Option WITH FORMAT angegeben, um einen neuen Mediensatz zu erstellen. Dies ist hilfreich, um die Sicherungen unter dem vollständigen Wiederherstellungsmodell von vorherigen Sicherungen zu trennen, die unter dem einfachen Wiederherstellungsmodell erstellt wurden. Im Rahmen dieses Beispiels wird die Sicherungsdatei (C:\
AdventureWorks2022
.bak) auf dem gleichen Laufwerk wie die Datenbank erstellt.Hinweis
Bei einer Produktionsdatenbank sollten Sie die Sicherung stets auf einem separaten Medium erstellen.
Erstellen Sie auf der Serverinstanz, die das primäre Replikat (
INSTANCE01
) hostet, folgendermaßen eine vollständige Sicherung der primären Datenbank:BACKUP DATABASE MyDB1 TO DISK = 'C:\MyDB1.bak' WITH FORMAT GO
Kopieren Sie die vollständige Sicherung auf die Serverinstanz, die das sekundäre Replikat hostet.
Stellen Sie mit RESTORE WITH NORECOVERY die vollständige Sicherung auf der Serverinstanz wieder her, auf der das sekundäre Replikat gehostet wird. Der Wiederherstellungsbefehl hängt davon ab, ob die Pfade der primären und sekundären Datenbanken identisch sind.
Wenn die Pfade identisch sind, führen Sie Folgendes aus:
Stellen Sie folgendermaßen die vollständige Sicherung auf dem Computer wieder her, der das sekundäre Replikat hostet:
RESTORE DATABASE MyDB1 FROM DISK = 'C:\MyDB1.bak' WITH NORECOVERY GO
Wenn die Pfade unterschiedlich sind, führen Sie Folgendes aus:
Wenn sich der Pfad der sekundären Datenbank vom Pfad der primären Datenbank unterscheidet (z. B. wenn die Laufwerkbuchstaben unterschiedlich sind), ist es für das Erstellen der sekundären Datenbank erforderlich, dass der Wiederherstellungsvorgang eine MOVE-Klausel einschließt.
Wichtig
Wenn die Pfadnamen der primären und sekundären Datenbank unterschiedlich sind, können Sie keine Datei hinzufügen. Der Grund hierfür besteht darin, dass die Serverinstanz des sekundären Replikats beim Empfangen des Protokolls für das Hinzufügen einer Datei versucht, die neue Datei unter demselben Pfad abzulegen, der von der primären Datenbank verwendet wird.
Der folgende Befehl stellt z. B. eine Sicherung einer primären Datenbank wieder her, die sich im Datenverzeichnis der Standardinstanz von SQL Server(C:\Programme\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA) befindet. Bei der Datenbankwiederherstellung muss die Datenbank in das Datenverzeichnis einer Remoteinstanz von SQL Server (Always On1) verschoben werden, die das sekundäre Replikat auf einem anderen Clusterknoten hostet. Dort werden die Daten und-Protokolldateien im Verzeichnis C:\Programme\Microsoft SQL Server\MSSQL13.Always On1\MSSQL\DATA wiederhergestellt. Der Wiederherstellungsvorgang verwendet WITH NORECOVERY, um die sekundäre Datenbank in der wiederhergestellten Datenbank zu belassen.
RESTORE DATABASE MyDB1 FROM DISK='C:\MyDB1.bak' WITH NORECOVERY, MOVE 'MyDB1_Data' TO 'C:\Program Files\Microsoft SQL Server\MSSQL13.Always On1\MSSQL\DATA\MyDB1_Data.mdf', MOVE 'MyDB1_Log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL13.Always On1\MSSQL\DATA\MyDB1_Data.ldf'; GO
Nach dem Wiederherstellen der vollständigen Sicherung müssen Sie eine Protokollsicherung für die primäre Datenbank erstellen. Beispielsweise wird das Protokoll mit der folgenden Transact-SQL-Anweisung in der Sicherungsdatei E:\MyDB1_log.trn gesichert:
BACKUP LOG MyDB1 TO DISK = 'E:\MyDB1_log.trn' GO
Sie können die Datenbank erst mit dem sekundären Replikat verknüpfen, nachdem Sie die erforderliche Protokollsicherung (und alle nachfolgenden Protokollsicherungen) angewendet haben.
So wird beispielsweise mit der folgenden Transact-SQL-Anweisung das erste Protokoll von C:\MyDB1.trn wiederhergestellt:
RESTORE LOG MyDB1 FROM DISK = 'E:\MyDB1_log.trn' WITH FILE=1, NORECOVERY GO
Wenn weitere Protokollsicherungen erfolgen, bevor die Datenbank mit dem sekundären Replikat verknüpft wird, müssen Sie mit RESTORE WITH NORECOVERY auch alle Protokollsicherungen nacheinander auf der Serverinstanz wiederherstellen, die das sekundäre Replikat hostet.
So werden beispielsweise mit der folgenden Transact-SQL-Anweisung zwei zusätzliche Protokolle von E:\MyDB1_log.bak wiederhergestellt:
RESTORE LOG MyDB1 FROM DISK = 'E:\MyDB1_log.trn' WITH FILE=2, NORECOVERY GO RESTORE LOG MyDB1 FROM DISK = 'E:\MyDB1_log.trn' WITH FILE=3, NORECOVERY GO
PowerShell
So bereiten Sie eine sekundäre Datenbank vor
Wenn Sie eine aktuelle Sicherung der primären Datenbank erstellen müssen, wechseln Sie mitcdin das Verzeichnis der Serverinstanz, die das primäre Replikat hostet.
Verwenden Sie das Cmdlet Backup-SqlDatabase , um jede Sicherung zu erstellen.
Wechseln Sie mitcdin das Verzeichnis der Serverinstanz, die das sekundäre Replikat hostet.
Stellen Sie die Datenbank und die Protokollsicherungen aller primären Datenbanken mit dem Cmdlet restore-SqlDatabase wieder her, und geben Sie dabei den Wiederherstellungsparameter NoRecovery an. Wenn sich die Dateipfade zwischen den Computern unterscheiden, die das primäre Replikat und das sekundäre Zielreplikat hosten, verwenden Sie ebenfalls den Wiederherstellungsparameter RelocateFile .
Hinweis
Um die Syntax eines Cmdlets anzuzeigen, verwenden Sie das Get-Help -Cmdlet in der SQL Server PowerShell-Umgebung. Weitere Informationen finden Sie unter Get Help SQL Server PowerShell.
Um die Konfiguration der sekundären Datenbank abzuschließen, müssen Sie sie mit der Verfügbarkeitsgruppe verknüpfen. Weitere Informationen finden Sie unter Verknüpfen einer sekundären Datenbank mit einer Verfügbarkeitsgruppe (SQL Server).
Einrichten und Verwenden des SQL Server PowerShell-Anbieters
Beispiele für Sicherung, Wiederherstellungsskript und Befehl
Mit den folgenden PowerShell-Befehlen werden eine vollständige Datenbanksicherung und ein Transaktionsprotokoll auf einer Netzwerkfreigabe gesichert und diese Sicherungen von dieser Freigabe wiederhergestellt. In diesem Beispiel wird davon ausgegangen, dass der Dateipfad, unter dem die Datenbank wiederhergestellt wird, mit dem Dateipfad identisch ist, unter dem die Datenbank gesichert wurde.
# Create database backup
Backup-SqlDatabase -Database "MyDB1" -BackupFile "\\share\backups\MyDB1.bak" -ServerInstance "SourceMachine\Instance"
# Create log backup
Backup-SqlDatabase -Database "MyDB1" -BackupAction "Log" -BackupFile "\\share\backups\MyDB1.trn" -ServerInstance "SourceMachine\Instance"
# Restore database backup
Restore-SqlDatabase -Database "MyDB1" -BackupFile "\\share\backups\MyDB1.bak" -NoRecovery -ServerInstance "DestinationMachine\Instance"
# Restore log backup
Restore-SqlDatabase -Database "MyDB1" -BackupFile "\\share\backups\MyDB1.trn" -RestoreAction "Log" -NoRecovery -ServerInstance "DestinationMachine\Instance"
Nächste Schritte
Um die Konfiguration der sekundären Datenbank abzuschließen, müssen Sie die neu wiederhergestellte Datenbank mit der Verfügbarkeitsgruppe verknüpfen. Weitere Informationen finden Sie unter Verknüpfen einer sekundären Datenbank mit einer Verfügbarkeitsgruppe (SQL Server).
Siehe auch
Übersicht über Always On-Verfügbarkeitsgruppen (SQL Server)
BACKUP (Transact-SQL)
RESTORE-Argumente (Transact-SQL)
RESTORE (Transact-SQL)
Problembehandlung bei einem fehlgeschlagenen Vorgang zum Hinzufügen einer Datei (Always On-Verfügbarkeitsgruppen)