Wiederherstellen einer SQL-Datenbank mithilfe der Befehlszeilen-Recovery mit NMM

This article applies to This article does not apply to This article is not tied to any specific product. Not all product versions are identified in this article.

Instructions


In diesem Artikel wird das Verfahren für eine erfolgreiche Wiederherstellung einer SQL-Datenbank dokumentiert, die mit NMM mithilfe von VDI

gesichert wurde. Die Wiederherstellung einer SQL-Datenbank aus dem Backup mithilfe der Befehlszeile kann erforderlich sein, wenn ein Problem mit der Wiederherstellung über die GUI vorliegt (NetWorker-Nutzer für SQL Server-GUI oder das SSMS-Plug-in). Entweder ist die Browsing-Aufgabe über die GUI langsam oder die erforderliche Datenbank ist in der GUI für die Wiederherstellung nicht sichtbar.


In der Regel werden die folgenden Savesets erstellt, wenn eine einzelne Datenbank gesichert wird:

Ein komplettes Backup einer einzelnen Datenbank verfügt über die folgenden Savesets:
SQLbackups.001 Data Domain sql12srv1 25.05.2016 13:26:41 119 MB 3209027663 cb komplett MSSQL$FINANCE:testdb ==> Komplettes Backup-Saveset
SQLbackups.001 Data Domain sql12srv1 25.05.2016 13:29:16 5 KB 3192250597 cb incr MSSQL$FINANCE: testdb ==> Metadaten-Saveset.


Ein inkrementelles Backup einer einzelnen Datenbank verfügt über die folgenden Savesets:
SQLbackups.001 Data Domain sql12srv1 25.05.2016 13:34:14 1320 MB 3141919250 cb incr MSSQL$FINANCE:testdb ==> Protokollbackup-Saveset
SQLbackups.001 Data Domain sql12srv1 25.05.2016 13:40:31 5 KB 3125142409 cb incr MSSQL$FINANCE:testdb ==> Metadaten-Saveset


Beachten Sie, dass jedes Backup über ein Metadaten-Saveset verfügt, das immer auf der Ebene "incr" erstellt wird und normalerweise sehr klein ist. Dieses Saveset enthält Informationen, die es ermöglichen, die DB-Liste in der GUI "NetWorker User for SQL Server" anzuzeigen. Dieses Saveset wird mit jedem SQL VDI-Backup erstellt. Es ist jedoch möglich, dass dieses Saveset nicht vorhanden ist, wenn der manuelle Klonprozess dieses Saveset fälschlicherweise nicht zum Klonen eingeschlossen hat und wenn die ursprünglichen Savesets nicht mehr vorhanden sind. Wenn dies der Fall ist, ist die Befehlszeilenwiederherstellung die einzige Option.

Sobald Sie festgelegt haben, von welchem Backup Sie eine Wiederherstellung durchführen müssen, können Sie die Befehlszeile erstellen. Nachfolgend finden Sie ein Beispiel für einen Wiederherstellungsbefehl:

nsrsqlrc -s nsr-server -c sql12srv1 -t "25.05.2016 13:34:14 Uhr" -d "MSSQL$FINANCE:testdb-recovered" -C " 'testdb' = 'c:\recover\testdb.mdf', 'testdb_log' = 'c:\recover\testdb_log.ldf', 'testdb_log1' = 'c:\recover\testdb_log1.ldf'" "MSSQL$FINANCE:testdb"

Im obigen Befehl

gibt die Option -s den Namen des NetWorker-Servers an.
Die Option -c wird verwendet, um den Quellclient anzugeben (wenn die Recovery auf einem anderen Host als dem Quellclient durchgeführt wird),
-d gibt die Zieldatenbank an, auf der wiederhergestellt werden soll. Diese DB wird nicht vorhanden sein. Beim Wiederherstellungsprozess wird die DB auf der Ziel-Instance erstellt.
-C gibt an, dass es sich um eine Kopiewiederherstellung handelt. Die Parameter nach dem -C geben die logischen Namen der Dateien in der Datenbank an.  Beachten Sie, dass diese Namen genau mit den logischen Namen der Datenbank übereinstimmen müssen, die wiederhergestellt wird.  Wenn die Datenbank vorhanden ist, führen Sie Eigenschaften für den DB-Namen über die SSMS-GUI aus und suchen Sie unter "Files".

Wenn die Wiederherstellung auf einen geclusterten SQL-Server durchgeführt wird, fügen Sie dem Wiederherstellungsbefehl den Befehl "-A" für den virtuellen Servernamen hinzu.

Die letzte Komponente im Befehl ist der Name der Datenbank, die wiederhergestellt wird, z. B. MSSQL$
FINANCE:testdb

Wenn Sie nicht sicher sind, wie die logischen Namen der Datenbankdateien lauten, können Sie einen unvollständigen Befehl wie folgt eingeben:

nsrsqlrc -s nsr-server -c sql12srv1 -t "25.05.2016 13:34:14 Uhr" -d "MSSQL$FINANCE:testdb-recovered" -C " 'mydb' = 'c:\ recover\testdb.mdf'" "MSSQL$FINANCE:testdb"
43708:(PID 2144):Startzeit: Wed May 25 15:37:42 2016
43621:(pid 2144):Computername: SQL12SRV1 Benutzername: Administrator
NSR_CLIENT: sql12srv1.jets.local;
                  NSR_SERVER: nsr-Server;
37725:(PID 2144):Datenbank 'testdb' in 'testdb-recovered' wiederherstellen ...
142468:(PID 2144):[2292]nsr/db_apps/bsmsql/rcstripes.c(222): Suchen des Backups für das Saveset MSSQL$FINANCE:/testdb.
37945:(PID 2144): Fehlende Verlagerung der logischen Datei testdb.
37945:(PID 2144):Fehlende Verlagerung für logische Datei testdb_log.
37945:(PID 2144):Fehlende Verlagerung für logische Datei testdb_log1.
37946:(PID 2144): Keine logische Datei mit dem Namen mydb in der ursprünglichen Datenbank
29401:(PID 2144):D Fehler bei der Verlagerungsliste der Atabase-Datei. Aktuelle Dateiliste lautet:
37947:(pid 2144):       testdb = C:\Programme\Microsoft SQL Server\MSSQL11. FINANCE\MSSQL\DATA\
testdb.mdf 37947:(PID 2144):       testdb_log = C:\Programme\Microsoft SQL Server\MSSQL11. FINANCE\MSSQL\DATA\testdb_log.ldf
37947:(PID 2144):       testdb_log1 = C:\Programme\Microsoft SQL Server\MSSQL11. FINANCE\MSSQL\DATA\testdb_log1.ldf

142468:(PID 2144):[2292]nsr/db_apps/bsmsql/rcstripes.c(222): Suchen des Backups für das Saveset MSSQL$FINANCE:/testdb.
37945:(PID 2144): Fehlende Verlagerung der logischen Datei testdb.
37945:(PID 2144):Fehlende Verlagerung für logische Datei testdb_log.
37945:(PID 2144):Fehlende Verlagerung für logische Datei testdb_log1.
37946:(PID 2144):Keine logische Datei mit dem Namen mydb in der ursprünglichen Datenbank
29401:(PID 2144):D Fehler bei der Verlagerungsliste der Atabase-Datei. Aktuelle Dateiliste lautet:
37947:(pid 2144):       testdb = C:\Programme\Microsoft SQL Server\MSSQL11. FINANCE\MSSQL\DATA\
testdb.mdf 37947:(PID 2144):       testdb_log = C:\Programme\Microsoft SQL Server\MSSQL11. FINANCE\MSSQL\DATA\testdb_log.ldf
37947:(PID 2144):       testdb_log1 = C:\Programme\Microsoft SQL Server\MSSQL11. FINANCE\MSSQL\DATA\testdb_log1.ldf

Wiederherstellungsvorgang wurde mit Fehlern abgeschlossen. Weitere Informationen finden Sie in der Backupprotokolldatei des Moduls. Unbekannter XBSA-Fehler 1169 (0x491) nsr/db_apps/bsmsql/rcovmain.cpp(442): Eingabe von cleanUp() nsr/db_apps/bsmsql/rcovmain.cpp(500): Beenden von cleanUp().
43709:(PID 2144):Stoppzeit: Wed May 25 15:37:49 2016***********************




Im obigen Befehl habe ich einen zufälligen logischen Namen 'mydb' gegeben und der Befehl spuckt den tatsächlichen logischen Namen der DB-Dateien und den ursprünglichen Speicherort aus. Sie können diese Informationen verwenden, um Ihren Wiederherstellungsbefehl zu erstellen. Beachten Sie, dass Sie einen anderen Pfad angeben müssen, um die Daten wiederherzustellen. Sie können und sollten den ursprünglichen Quellpfad nicht im Wiederherstellungsbefehl angeben, um das Risiko zu vermeiden, dass vorhandene Daten überschrieben werden.

Die Backupzeit für die Wiederherstellung kann über den Befehl mminfo abgerufen werden. Es kann entweder die in der Ausgabe angezeigte Speicherzeit verwendet werden, oder Sie können Berichte zu nsavetime erstellen und stattdessen diese Zeit verwenden.

z. B.:

mminfo -avot -s nsr-server -q "client=sql12srv1,savetime >= yesterday"

SQLbackups.001 Data Domain sql12srv1 25.05.2016 13:26:41 119 MB 3209027663 cb full MSSQL$FINANCE:testdb
SQLbackups.001 Data Domain sql12srv1 25.05.2016 13:29:16 5 KB 3192250597 cb incr MSSQL$FINANCE:testdb
SQLbackups.001 Data Domain sql12srv1 25.05.2016 13:34:14 PM 1320 MB 3141919250 cb incr MSSQL$FINANCE:testdb
SQLbackups.001 Data Domain sql12srv1 25.05.2016 13:40:31 5 KB 3125142409 cb incr MSSQL$FINANCE:testdb

mminfo -avot -s nsr-server -q "client=sql12srv1,savetime >= yesterday" -r volume,client,sumflags,sumsize,level,savetime(25),nsavetime,name

SQLbackups.001 sql12srv1 cb 119 MB voll 25.05.2016 13:26:41 1464197201 MSSQL$FINANCE:testdb
SQLbackups.001 sql12srv1 cb 5 KB incr 25.05.2016 13:29:16 1464197356 MSSQL$FINANCE:testdb
SQLbackups.001 sql12srv1 cb 1320 MB incr 25.05.2016 13:34:14 1464197654 MSSQL$FINANCE:testdb
SQLbackups.001 sql12srv1 cb 5 KB incr 25.05.2016 13:40:31 1464198031 MSSQL$FINANCE:testdb

Hinweis: Sie können die nsavetime/savetime des Metadaten-Savesets oder des tatsächlichen Daten-Savesets angeben. Beides funktioniert.

Szenario 2:

Wenn die Backups in der Medien-DB ohne die DB-Namen registriert werden, ist der Zeitpunkt des erforderlichen Backups nicht so offensichtlich. Zum Beispiel haben alle DB-Backups die gleichen Saveset-Namen wie unten:

SQLbackups.001 Data Domain sql12srv1 25.05.2016 16:43:15 151 KB 2672168543 cb incr MSSQL$FINANCE:
SQLbackups.001 Data Domain sql12srv1 25.05.2016 16:45:26 PM 151 KB 2655391455 cb incr MSSQL$FINANCE:Aus

dem oben Gesagten kann man nicht sagen, welches Saveset das Backup hat, das Sie benötigen.

Wenn das Saveset für Metadaten vorhanden ist, können die Backups über die GUI durchsucht werden und Sie können den DB-Namen und die Backupzeit in der GUI finden. Wenn z.B. DB24 erforderlich ist, zeigt die GUI die Backupzeit als "5/25/2016 4:49 PM" an. 

kA5j0000000TNJYCA4_1_0

Wenn das Metadaten-Saveset nicht vorhanden ist, müssen Sie den Befehl nsrinfo ausführen, um die Speicherzeit für die Wiederherstellung zu ermitteln. z.B. wenn mminfo die Savesets wie folgt anzeigt:

SQLbackups.001 Data Domain sql12srv1 25.05.2016 16:43:15 151 KB 2672168543 cb incr MSSQL$FINANCE:
SQLbackups.001 Data Domain sql12srv1 25.05.2016 16:45:26 151 KB 2655391455 cb incr MSSQL$FINANCE:
SQLbackups.001 Data Domain sql12srv1 25.05.2016 16:47:34 151 KB 2638614367 cb incr MSSQL$FINANCE:
SQLbackups.001 Data Domain sql12srv1 25.05.2016 16:49:42 151 KB 2621837279 cb incr MSSQL$FINANCE:
SQLbackups.001 Data Domain sql12srv1 25.05.2016 16:51:50 151 KB 2605060191 cb incr MSSQL$FINANCE:
SQLbackups.001 Data Domain sql12srv1 25.05.2016 16:53:58 151 KB 2588283103 cb incr MSSQL$FINANCE:Führen

Sie nsrinfo zu den Speicherzeiten wie unten beschrieben aus, um Informationen über die Datenbank abzurufen, die Teil des Savesets ist:

nsrinfo -n mssql -t "25.05.2016 16:43:15 Uhr" sql12srv1
Scanclient 'sql12srv1' für Speicherzeit 1464208995(25.05.2016 16:43:15 Uhr) aus dem mssql-Namespace
MSSQL$FINANCE:/ DB21
MSSQL$FINANCE:/DB21%/files.1464208995.1464209044
2 Objekte gefunden

nsrinfo -n mssql -t "25.05.2016 16:49:42 Uhr" sql12srv1
Scan-Client 'sql12srv1' für savetime 1464209382(25.05.2016 16:49:42) aus dem mssql-Namespace
MSSQL$FINANCE:/DB24
MSSQL$FINANCE:/DB24%/files.1464209382.1464209437
2 Objekte gefunden

Da die Savesets nicht die DB-Namen anzeigen, könnte das oben Gesagte ein Versuch und Irrtum sein, in dem Szenario, in dem das Metadaten-Saveset nicht vorhanden ist. Verwenden Sie die ungefähre DB-Größe als Anhaltspunkt, um die nsrinfo-Abfrage auf einige wenige Savesets einzugrenzen.

Article Properties
Article Number: 000022417
Article Type: How To
Last Modified: 09 Aug 2022
Version:  4
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.