2012-11-15 8 views
11

Ich habe nicht viel SQL gemacht und bin immer noch ziemlich neu, also bitte entschuldigen Sie, was wahrscheinlich eine grundlegende Frage ist.Wiederherstellen einer Datenbank aus .bak-Datei auf einem anderen Rechner

Ich wurde gebeten, einen SQL-Job zu erstellen, um unsere Datenbanken zu sichern, die .baks auf einem anderen Computer zu speichern und sie dann auf einem zweiten Server wiederherzustellen. Ich habe ein wenig recherchiert und mit SSMS gespielt und die Datenbank auf meinem persönlichen Computer gesichert, indem ich eine Freigabe eingerichtet habe und einen Backup-Job zum Speicherort der Freigabe ausgeführt habe. Ich versuche jetzt, eine neue Datenbank (auf dem gleichen Server, von dem ich zurückgesprungen bin) zu erstellen, indem ich die .bak-Datei wiederherstelle (aber der Datenbank gebe ich einen neuen Namen und was nicht), bin aber nicht in der Lage um anzugeben, dass ich sie von der Freigabe wiederherstellen möchte, wie ich es beim Backup getan habe/Ich kann nicht herausfinden, wie ich andere Netzwerkspeicherorte angeben soll und suche gerade auf dem C-Laufwerk des Servers, wenn ich versuche, die Datei zu finden.

Denn jetzt, ich bin die nur mit integrierten Assistenten diese (offene SSMS zu versuchen und zu erreichen -> Mit Server verbinden -> Rechtsklick DataBases -> Wiederherstellen von Datenbanken und wählen Sie dann vom Gerät und durchsuchen Sie die Datei finden).

Dies ist nicht der letzte Prozess, nur ich versuche zu verstehen, wie das funktioniert. Wie gesagt, die Idee ist letztendlich einen geplanten Job zu haben, um die Datenbank von Server1 zu einem .bak auf, sagen wir, meinem persönlichen Rechner zu sichern und dann zu einer Datenbank auf Server2 (anderes Netzwerk, andere Stadt) und wahrscheinlich wiederherzustellen mit einer Reihe von SQL-Befehlen, anstatt den Assistenten jedes Mal zu verwenden (es gibt einige DBs, die letztendlich gesichert werden müssen).

Ich entschuldige mich für die möglicherweise ziemlich langwierige und komplizierte Frage - im Wesentlichen, alles, was ich wissen muss, ist wie kann ich eine DB in SSMS von einem .bak auf einer anderen Maschine wiederherstellen? Vielen Dank

+1

mögliche Duplikate von [Import .bak-Datei in eine Datenbank in SQL Server] (http://stackoverflow.com/questions/1 535914/import-bak-file-zu-einem-datenbank-in-sql-server) –

+0

Ein ausführliches Blog: http://sforsuresh.in/import-bak-file-microsoft-sql-server-2012/ –

Antwort

30

Sie könnten etwas wie das folgende Skript verwenden. Es stellt eine Datenbank aus dem Dateisystem wieder her und überschreibt die vorhandene Datenbank mit dem Namen "MyDB". Dabei werden die Dateien an neue Speicherorte Ihrer Wahl verschoben.

 
RESTORE DATABASE 
    MyDB 
FROM DISK = '\\MyShare\MyBackup.bak' 
WITH 
    MOVE 'DataFile' TO 'D:\myNewDBLocation\DataFile.mdf', 
    MOVE 'LogFile' TO 'E:\\myNewDBLocation\LogFile.ldf' 
, REPLACE 

Sie können den Namen der llogical Dateien herausfinden (in den oben genannten, sind diejenigen genannt DataFile und LogFile indem Sie den folgenden:

 
RESTORE FILELISTONLY 
FROM DISK = '\\MyShare\MyBackup.bak' 

Weitere Informationen über die verschiedenen Optionen und Parameter:

RESTORE (Transact-SQL)

+0

Danke für die schnelle Antwort. Ein paar Fragen, 1) Was sind die DataFile und LogFiles? Wenn ich die DataBase auf dem gleichen Server/Standort wiederherstelle (gerade während ich mich damit beschäftige, möchte ich nicht wirklich auf den zweiten Server zugreifen, wenn es nicht wirklich nötig ist) würden sie noch verschoben werden müssen? 2) Ich habe versucht, mit wiederherzustellen, RESTORE DATABASE MyDB FROM DISK = '\ MyShare \ MyDir \ backup.bak MIT ERSETZEN' aber bekomme ich den Fehler: "Das Medienset hat 2 Medienfamilien, sondern nur 1 bereitgestellt werden. Alle Mitglieder müssen zur Verfügung gestellt werden. " Was ich nicht behaupten kann zu verstehen, jede Hilfe wird sehr geschätzt. – cprlkleg

+0

Die Datendatei (en) sind Dateien, die tatsächliche Daten enthalten. Das Logifle ist das Transaktionslog ist wie eine Logdatei von Transaktionen, mit der die Daten im Falle eines Absturzes zu einem bestimmten Zeitpunkt wiederhergestellt werden können. Versuchen Sie, den Befehl RESTORE FILELISTONLY auszuführen, um herauszufinden, welche Dateien tatsächlich von der Datenbank verwendet werden. Und ja, wenn Sie die Datenbank auf dem gleichen Server wiederherstellen, müssen Sie die Dateien verschieben. Andernfalls versucht die neue Datenbank, dieselben Dateien wie die erste Datenbank zu verwenden, was nicht möglich wäre. – SchmitzIT

+1

Vielen Dank. Bin jetzt am laufen und laufe :-) Wäre upvote, kann aber noch nicht. – cprlkleg

Verwandte Themen