Neue Datenbank aus einer Sicherung einer anderen Datenbank auf demselben Server erstellen?


75

Ich versuche, eine neue Datenbank aus einer alten Sicherung der Datenbank auf demselben Server zu erstellen. Wenn Sie SQL Server Management Studio verwenden und versuchen, aus der Sicherung die neue Datenbank wiederherzustellen, wird dieser Fehler angezeigt

System.Data.SqlClient.SqlError: The backup set holds a backup of a database 
other than the existing 'test' database. (Microsoft.SqlServer.Smo)

Nachdem ich herumgegoogelt hatte, fand ich diesen Code

    RESTORE DATABASE myDB

 FROM DISK = 'C:\myDB.bak'

 WITH MOVE 'myDB_Data' TO 'C:\DATA\myDB.mdf',

MOVE 'myDB_Log' TO 'C:\DATA\myDB_log.mdf'
GO

Ich habe mich gefragt, ob die Verschiebungsanweisungen mit der Datenbank, von der die Sicherung auf diesem Server stammt, in Konflikt geraten.

Vielen Dank, alle Hilfe geschätzt.


Schlagen Sie vor, Sie versuchen: dba.stackexchange.com
JohnFx

Nein, Wiederherstellungen wirken sich nicht auf die ursprüngliche Quelldatenbank aus (es sei denn, Sie stellen sie dort wieder her)
Simon Coleman

Antworten:


129

Ich denke das ist einfacher als das.

  • Erstellen Sie zunächst eine leere Zieldatenbank.
  • Suchen Sie dann im Wiederherstellungsassistenten "SQL Server Management Studio" nach der Option zum Überschreiben der Zieldatenbank. Es befindet sich auf der Registerkarte "Optionen" und heißt "Vorhandene Datenbank überschreiben (MIT ERSETZEN)" . Prüfen Sie.
  • Denken Sie daran, die Zieldateien auf der Seite "Dateien" auszuwählen.

Sie können die Registerkarten auf der linken Seite des Assistenten ändern (Allgemein, Dateien, Optionen).


2
Vielen Dank, ich hatte zuvor versucht, die Option mit Ersetzen im Management Studio zu verwenden, aber den Teil "Dateien" nicht ausgeführt. Haben Sie getan, was Sie vorgeschlagen haben, und die Datenbank wird jetzt erstellt.
Schwungrad

Ich bin auf dieses Problem gestoßen,
user7023213

71

Es ist sogar möglich, eine Wiederherstellung durchzuführen, ohne eine leere Datenbank zu erstellen.

Klicken Sie in SQL Server Management Studio mit der rechten Maustaste auf Datenbanken und wählen Sie Datenbank wiederherstellen ... Geben Sie hier die Bildbeschreibung ein

Wählen Sie im Dialogfeld "Datenbank wiederherstellen" die Quelldatenbank oder das Gerät wie gewohnt aus. Sobald die Quellendatenbank ausgewählt ist, füllt SSMS den Namen der Zieldatenbank basierend auf dem ursprünglichen Namen der Datenbank.

Es ist dann möglich, den Namen der Datenbank zu ändern und einen neuen Namen für die Zieldatenbank einzugeben .

Geben Sie hier die Bildbeschreibung ein

Bei diesem Ansatz müssen Sie nicht einmal zur Registerkarte "Optionen" wechseln und auf die Option "Vorhandene Datenbank überschreiben" klicken.

Außerdem werden die Datenbankdateien konsistent mit Ihrem neuen Datenbanknamen benannt, und Sie haben weiterhin die Möglichkeit, die Dateinamen zu ändern, wenn Sie möchten.


3
Dies ist eine der besten Optionen!
user2040021

4
Ich wünschte, ich könnte dies mehr als einmal positiv bewerten! Dies ist eigentlich die Antwort, nach der ich gesucht habe, und nicht der Workaround-Ansatz, der in den besser bewerteten Antworten beschrieben ist!
Trebor

3
Diese Lösung hat bei mir funktioniert, aber nur, wenn ich die Dateinamen "Wiederherstellen als" auf der Registerkarte "Dateien" speziell in etwas geändert habe, das noch nicht vorhanden war. Andernfalls wird die Fehlermeldung "Dateien werden bereits verwendet, können nicht überschrieben" fehlgeschlagen.
Jeremy

1
Es ist die beste Lösung. Wie @Jeremy hervorhebt, wird in der Antwort nicht erwähnt, dass die erforderlichen "Wiederherstellen als" -Pfade ersetzt werden müssen. Dort müssen vor dem Wiederherstellen die neuen Datenbankpfade festgelegt werden.
Pedro Fonseca

1
Das hat auch bei mir funktioniert! :) Ich musste deaktivieren, Take tail-log backup before restoreda ich einen Fehler bekam, wie hier beschrieben stackoverflow.com/a/29497004/5588197
Jan Paolo Go

9

Das Überprüfen der Optionen über die Schreibdatenbank hat bei mir funktioniert :)

Geben Sie hier die Bildbeschreibung ein


1

Stellen Sie es sich wie ein Archiv vor. MyDB.Bak enthält MyDB.mdf und MyDB.ldf.

Mit Move wiederherstellen, um zu sagen, dass HerDB MyDB.mdf (und ldf) im Grunde genommen von der Sicherung abruft und sie als HerDB.mdf und ldf kopiert.

Wenn Sie also bereits eine MyDb auf der Serverinstanz haben, die Sie wiederherstellen, wird diese nicht berührt.

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.