Der Sicherungssatz enthält eine Sicherung einer anderen als der vorhandenen Datenbank

485

Ich versuche, eine SQL Server-Sicherungsdatei für meine Datenbank wiederherzustellen, aber es wird ein Fehler wie folgt ausgegeben:

Der Sicherungssatz enthält eine Sicherung einer anderen als der vorhandenen Datenbank

Meine Datenbank in SQL Server 2008 und die Sicherungsdatei sind im Jahr 2005.

Was kann das Problem sein?

RD
quelle
95
Die hoch gewählte Antwort unten ist ein Vorschlaghammer, um eine Nuss zu knacken. Das Problem ist höchstwahrscheinlich, dass Sie im Fenster Wiederherstellen> Optionen nicht die Option " Vorhandene Datenbank überschreiben (MIT ERSETZEN) " ausgewählt haben . Ich hatte dieses Problem über die Befehlszeile mit und wurde durch die Verwendung behoben . WITH MOVEWITH REPLACE, MOVE
James McCormack
Ich habe den gleichen Fehler mit einer meiner Datenbanken, jedoch nur, wenn der SQL Server-Agent deaktiviert ist. Wenn ich es einschalte, gibt es keinen Fehler und ich kann ohne Probleme wiederherstellen. Meine BAK-Datei enthält nur eine einzige Datenbank, und dieser Datenbankname (und die logischen Dateinamen) sind auf meinem Server eindeutig.
Entwickler-Webs

Antworten:

807

Auch ich bin auf dieses Problem gestoßen.

Lösung:

  • Erstellen Sie keine leere Datenbank und stellen Sie die .bakDatei darauf wieder her.
  • Verwenden Sie die Option 'Datenbank wiederherstellen', auf die Sie zugreifen können, indem Sie mit der rechten Maustaste auf den Zweig "Datenbanken" des SQL Server Management Studio klicken, und geben Sie den Datenbanknamen an, während Sie die Quelle für die Wiederherstellung angeben.
  • Ändern Sie auch die Dateinamen unter "Dateien", wenn die andere Datenbank noch vorhanden ist. Andernfalls erhalten Sie "Die Datei '...' kann nicht überschrieben werden. Sie wird von der Datenbank 'yourFirstDb' verwendet".
sunil_philip
quelle
102
Es wäre für SSMS so einfach, mir dies zu sagen, wenn der Fehler auftritt
cja
16
+1 für " Erstellen Sie keine leere Datenbank und stellen Sie die .bak-Datei darauf wieder her " ... ja, das löst das Problem . (Aber warum habe ich dieses Problem nicht alle anderen Male bekommen, als ich das Gleiche getan habe? Und haben wir nicht erst damit begonnen, diese Vorerstellung als Problemumgehung für eine andere unerklärliche Fehlermeldung durchzuführen?:])
Reg Edit
Jemand sollte dies als Antwort markieren, da dies der Rat war, den ich brauchte, um ein Backup erfolgreich wiederherzustellen.
Doreen
2
In der Datenbank wiederherstellen ging ich zu Dateien, Wiederherstellen als und gab eindeutige Dateinamen ein, da die ursprünglichen Namen für die Daten- und Protokolldateien noch vorhanden waren.
Dave Mateer
2
Ändern Sie auch die Dateinamen unter "Dateien", wenn die andere Datenbank noch vorhanden ist. Andernfalls erhalten Sie "Die Datei '...' kann nicht überschrieben werden. Sie wird von der Datenbank 'yourFirstDb' verwendet".
Verena Haunschmid
175

Entweder:

1) Verwenden Sie WITH REPLACEden RESTOREBefehl, wenn Sie ihn verwenden (wenn Sie die GUI verwenden, finden Sie ihn unter Optionen -> Vorhandene Datenbank überschreiben ( WITH REPLACE)).

2) Deletedie ältere Datenbank, die in Konflikt steht, und mit dem RESTOREBefehl erneut wiederherstellen .

Überprüfen Sie den Link für weitere Details.

Amarnath
quelle
1
vom Link kopiert und auch den Link bereitgestellt .. * seufz * (klug)
Abhijeetchindhe
4
@Abhijeetchindhe haha ​​.. Wiederverwendbarkeit und Höflichkeit .. :)
Amarnath
:) Eine ehrliche Software Er du bist! Wie auch immer, das ist die beste Antwort auf diese Frage. Und stimmen Sie für die Zeit ab, die Sie herausgenommen haben, um es zu finden :)
Abhijeetchindhe
1
Hatte das gleiche Problem wie die Operation und diese Antwort funktioniert einwandfrei. +1
Esteban
1
Diese WITH REPLACE-Option war auch die Lösung, die ich brauchte. Vielen Dank!
Adam
90

Erstellen Sie zunächst eine leere Datenbank mit demselben Namen. Wählen Sie dann die Wiederherstellungsoption

Vergessen Sie nicht, im linken Bereich unter Optionen die Option auszuwählen

  • Überschreiben Sie die vorhandene Datenbank
  • Behalten Sie die Replikationseinstellungen bei

Geben Sie hier die Bildbeschreibung ein

Das ist es

HimalayanCoder
quelle
51

Haben sich dem gleichen Problem gestellt und mit SSMS 2014 die Lösung gefunden

- Wählen Sie einfach die Option Vorhandene Datenbank überschreiben (MIT ERSETZEN). 

Vorhandene Datenbank> Aufgabe> Wiederherstellen> Datenbank

Smit Patel
quelle
34
USE [master];
GO

CREATE DATABASE db;
GO

CREATE DATABASE db2;
GO

BACKUP DATABASE db TO DISK = 'c:\temp\db.bak' WITH INIT, COMPRESSION;
GO

RESTORE DATABASE db2
  FROM DISK = 'c:\temp\db.bak'
  WITH REPLACE,
  MOVE 'db' TO 'c:\temp\db2.mdf',
  MOVE 'db_log' TO 'c:\temp\db2.ldf';
Elsoni
quelle
33

Einfache 3 Schritte:

1- Klicken Sie mit der rechten Maustaste auf Datenbank → Aufgaben → Wiederherstellen → Datenbank

2- DeviceAls Quelle prüfen und .bak-Datei (oder komprimierte .bak-Datei) suchen

3- Klicken Sie im linken Bereich auf optionsund:

  • überprüfen Sie die vorhandene Datenbank überschreiben.
  • Deaktivieren Sie vor der Wiederherstellung die Sicherung des Endprotokolls
  • Aktivieren Sie die Option Vorhandene Verbindung zur Zieldatenbank schließen.

Andere Optionen sind wirklich optional (und natürlich wichtig)!

Ali Sheikhpour
quelle
23

Es ist, weil die .mdfund.ldfDies liegt Dateien aus dem Original Dbmöglicherweise gefunden wurden c:\programFile\....und diese Informationen im Backup gespeichert sind!

Wenn Sie dieselbe Datenbank auf einem anderen SQL Server erstellen, auf dem die Installation ausgeführt wird c:\program Files (x86)\ ...., können Sie nicht wie gewohnt wiederherstellen. Sie müssen den Pfad für verschieben.mdf und .ldfDateien verschieben.

Deshalb:

  • Erstellen Sie eine leere Datenbank auf dem neuen Server

  • Klicken Sie mit der rechten Maustaste auf die leere Datenbank> Aufgaben> Wiederherstellen> Datenbank> klicken Sie auf Gerät .bak Dateien aus> Wählen Sie , in die wiederhergestellt werden soll

  • Klicken Sie links auf Dateien> Wählen Sie "Alle Dateien in Ordner verschieben".
  • Klicken Sie auf der linken Seite auf Optionen und dann auf Überschreiben

Erledigt!
Ich hoffe es hilft!

HELFER
quelle
16

Ich war heute auf ein ähnliches Problem gestoßen. Versuchte alle oben genannten Lösungen, funktionierte aber nicht. Also poste meine Lösung hier.

Vergessen Sie nicht, Tail-long Backup vor der Wiederherstellung zu deaktivieren

Vergessen Sie nicht, Tail-long Backup vor der Wiederherstellung zu deaktivieren

Hoffe es hilft auch anderen!

immayankmodi
quelle
Das hat bei mir funktioniert. Vielen Dank!
Bill Norman
16

Wenn Sie den Skriptansatz verwenden und einen Fehler in Bezug auf die LDF- und MDF-Dateien haben, können Sie in der Sicherungsdatei zunächst die logischen Namen (und andere Details) der Dateien im Sicherungssatz wie folgt abfragen :

-- Queries the backup file for the file list in backup set, where Type denotes 
-- type of file. Can be L,D,F or S
-- info: https://docs.microsoft.com/en-us/sql/t-sql/statements/restore-statements-filelistonly-transact-sql
RESTORE FILELISTONLY FROM DISK = 'C:\Temp\DB_backup.bak'
GO

Sie erhalten ähnliche Ergebnisse wie die folgenden:

Geben Sie hier die Bildbeschreibung ein

Und dann können Sie diese logischen Namen in den Abfragen verwenden:

    -- Script assumes you want MDF and LDF files restored on separate drives. Modify for your scenario
    RESTORE DATABASE DB 
    FROM DISK='C:\Temp\DB_backup.bak'
    WITH REPLACE,
      MOVE 'DB' TO 'E:\MSSQL\Data\DB.mdf', -- "DB" is the mdf logical name from query above
      MOVE 'DB_log' TO 'F:\MSSQL\Logs\DB.ldf'; -- "DB_log" is LDF logical name from query above

Weitere Informationen zu RESTORE FILELISTONLY finden Sie in den SQL Server-Dokumenten .

user919426
quelle
Ich hatte das gleiche Problem in der Frage, und in meinem Fall war die Datenbank-Sicherung vom Remote-Server und ich musste die gleiche Ordnerstruktur in meinem D-Laufwerk erstellen, die der Ausgabe der ersten Abfrage ähnelt. Dann funktionierte die zweite Abfrage korrekt und die Datenbank wurde wiederhergestellt.
Rinilnath
11

Ebenso wichtig ist es, sicherzustellen, dass Ihr Datenbankname mit dem Datenbanknamen in der Sicherung übereinstimmt, die Sie wiederherstellen möchten. Wenn es nicht übereinstimmt, erhalten Sie den gleichen Fehler.

Andrew Marais
quelle
Dies scheint besonders dann
zuzutreffen,
9

Bevor Sie etwas anderes tun, überprüfen Sie, ob Ihre Sicherung vollständig oder differenziell ist. Wenn Sie versuchen, eine neue Datenbank aus einer differenziellen Sicherung zu erstellen, tritt der Fehler auf, unabhängig davon, was Sie tun.

Tots Benedicto
quelle
1
Dies war das Problem, das ich hatte, also danke dafür !!! (Ich wusste nicht, dass die Sicherungsdatei tatsächlich eine differenzielle Sicherung ist.) So überprüfen Sie Folgendes: "HEADERONLY FROM DISK = 'C: \ myfile.bak' WIEDERHERSTELLEN" In den Ergebnissen ist BackupType von 1 = Vollständige Sicherung. BackupType von 5 = Differenzielle Sicherung.
Wimpie Ratte
9

system.data.sqlclient.sqlerror: Der Sicherungssatz enthält eine Sicherung einer anderen Datenbank als der vorhandenen Datenbank 'Dbname'

Ich bin herübergekommen, um eine Lösung zu finden

  1. Erstellen Sie keine Datenbank mit demselben oder einem anderen Datenbanknamen! Wichtig.

  2. Klicken Sie mit der rechten Maustaste auf die Datenbank Aufgaben> Wiederherstellen> Datenbank

  3. Wählen Sie unter "Quelle für Wiederherstellung" die Option "Vom Gerät".

  4. Wählen Sie die .bak-Datei

  5. Aktivieren Sie das Kontrollkästchen für die Datenbank in der folgenden Rasteransicht

  6. Zur Datenbank: "Hier können Sie den neuen Datenbanknamen eingeben" (Beispiel: DemoDB)

  7. Wählen Sie nicht die vorhandene Datenbank aus DropDownlist aus

  8. Klicken Sie nun auf OK, um eine neue Datenbank zu erstellen und alle Daten aus Ihrer .bak-Datei wiederherzustellen.

Über diesen Link können Sie sogar Hilfe erhalten

Hoffe, es wird helfen, Ihr Problem zu lösen ...

akshay5662
quelle
1
"Erstellen Sie keine Datenbank mit demselben oder einem anderen Datenbanknamen! Wichtig." Was meinst du?
Sajid
6

Dies führt immer zu Versionsinkompatibilitäten. Befolgen Sie diese Schritte, um Folgendes zu lösen:

Schritt 1: Erstellen Sie eine Datenbank mit Ihrem bevorzugten Namen. (In unserem Fall AdventureWorks)

Schritt 2: Schreiben Klicken Sie auf die Datenbank und dann auf Aufgaben >> Wiederherstellen >> Datenbank…

Geben Sie hier die Bildbeschreibung ein

Schritt 3: Gehen Sie auf dem Wiederherstellungsbildschirm zur dritten Auswahl von Optionen. Aktivieren Sie nun das Kontrollkästchen "Vorhandene Datenbank überschreiben (MIT ERSETZEN)".

Geben Sie hier die Bildbeschreibung ein

Schritt 4: Klicken Sie auf OK. Die Datenbank sollte erfolgreich wiederhergestellt werden.

Hinweis: Wenn Sie eine Datenbank MIT ERSETZEN wiederherstellen, wird die alte Datenbank überschrieben.

Alireza Abdollahnejad
quelle
Vielen Dank an Alireza für Ihre Bemühungen. Wir verwenden jedoch die Abfrage anstelle der grafischen Benutzeroberfläche.
Pugal
5

Gleiches Problem mit mir. Die Lösung für mich ist:

  1. Klicken Sie mit der rechten Maustaste auf die Datenbank.
  2. Aufgaben auswählen, Datenbank wiederherstellen auswählen.
  3. Klicken Sie auf der linken Seite auf Optionen.
  4. Aktivieren Sie die erste Option. Überschreiben Sie die vorhandene Datenbank (WITH REPLACE).
  5. Gehen Sie zu Allgemein und wählen Sie die Quell- und Zieldatenbank aus.
  6. Klicken Sie auf OK, fertig
Aayush Verma
quelle
3

Ich habe nur versucht, dieses Problem zu lösen.

Ich hatte alles versucht, von der Ausführung als Administrator bis hin zu den hier und anderswo gefundenen Vorschlägen. Was es für mich am Ende gelöst hat, war, die Option "Dateien verschieben" auf der Registerkarte "Dateien" zu aktivieren.

Hoffentlich hilft das jemand anderem.

Clint
quelle
3

Ich musste eine neue Datenbank auf meinem lokalen zum Testen erstellen und ich hatte ein Backup von meinem Produkt. Ich habe zuerst die Datenbank erstellt und versucht, das BAK über der neuen Datenbank auszuführen, was diesen Fehler für mich verursacht hat. Ich habe die Datenbank gelöscht und wiederhergestellt, während ich den neuen Datenbanknamen im Wiederherstellungsbildschirm selbst gefunden habe. Die Datenbank wurde beim Wiederherstellen automatisch erstellt.

Angelina Ilieva
quelle
3

Einige von Ihnen haben dies stark überkompliziert. Ich fand das sehr einfach.

1) Erstellen Sie eine Datenbank mit demselben Namen wie der Name Ihrer .bak-Dateidatenbank! Wichtig

2) Klicken Sie mit der rechten Maustaste auf die Datenbank | Aufgaben> Wiederherstellen> Datenbank

3) Wählen Sie unter "Quelle für Wiederherstellung" die Option "Vom Gerät".

4) Wählen Sie die .bak-Datei

5) Aktivieren Sie das Kontrollkästchen für die Datenbank in der folgenden Rasteransicht

6) Wählen Sie rechts unter "Seite auswählen" die Option "Optionen".

7) Aktivieren Sie das Kontrollkästchen "Replikationseinstellungen beibehalten (WITH KEEP_REPLICATION)".

Gehen Sie nun zurück zur Seite Allgemein und klicken Sie auf OK, um die Datenbank wiederherzustellen ... Das war's.

Rolon
quelle
Wo ist das "Seite auswählen"?
KansaiRobot
2

Ich habe die Arbeit auf alternative Weise erledigt, indem ich Skripte generiert habe. Das hat bei mir funktioniert, da Backup-Restore aufgrund des gleichen Fehlers nicht zur Behebung des Problems beigetragen hat.

Altaf Patel
quelle
2

Ändern Sie in den Optionen den Dateinamen "Wiederherstellen als" in die neue Datenbank mdf und ldf. Es verweist auf die .mdf- und .ldf-Dateien der Quellendatenbank.

Priyanka Rawat
quelle
1

Sie können in einer neuen Datenbank wiederherstellen, die Dateinamensyntax überprüfen, sie befindet sich in der Protokolldatei, und die neue SQL-Version enthält das Suffix "_log"

Überprüfen Sie, ob das vorhandene Datenbankflag auf der Registerkarte "Option" überschrieben werden soll

Fabio

Fabio
quelle
0

Ich bin mir sicher, dass dieses Problem mit den Berechtigungen für Dateien und Ordner zusammenhängt.

Popas
quelle
0

Ich habe versucht, eine Produktionsdatenbank in einer Staging-Datenbank auf demselben Server wiederherzustellen.

Das einzige, was in meinem Fall funktioniert hat, war die Wiederherstellung in einer neuen leeren Datenbank. Dies funktionierte hervorragend und versuchte nicht, Produktionsdateien zu überschreiben (was der Fall wäre, wenn Sie nur die Produktionssicherungsdatei in der vorhandenen Staging-Datenbank wiederherstellen würden). Löschen Sie dann die alte Datenbank und benennen Sie sie um - die Dateien behalten den neuen temporären Namen bei, aber in meinem Fall ist das in Ordnung.

(Oder löschen Sie auf andere Weise zuerst die Staging-Datenbank, und stellen Sie dann eine neue Datenbank mit demselben Namen wie die Staging-Datenbank wieder her.)

mike nelson
quelle
0

anstatt auf Datenbank wiederherstellen klicken Sie auf wiederherstellen zu Datei und Dateigruppen wiederherstellen.

Das funktioniert auf meinem SQL Server

Ali Sadri
quelle
0

Dies hat mir geholfen, die Sicherungsdatei vom Systemlaufwerk zu importieren

  1. Erstellen Sie eine Datenbank mit demselben Namen (vorzugsweise) wie der Name Ihrer .bak-Dateidatenbank
  2. Klicken Sie mit der rechten Maustaste auf die Datenbank> Aufgaben> Wiederherstellen> Datenbank
  3. Wählen Sie unter "Quelle für Wiederherstellung" die Option "Vom Gerät".
  4. Wählen Sie die .bak-Datei aus und wählen Sie den Pfad aus dem System aus
  5. Aktivieren Sie das Kontrollkästchen für die Datenbank im Listenfeld unten
  6. Wählen Sie rechts unter "Seite auswählen" die Option "Optionen".
  7. Aktivieren Sie das Kontrollkästchen "Replikationseinstellungen beibehalten (WITH KEEP_REPLICATION").
  8. Aktivieren Sie das Kontrollkästchen zum Überschreiben der vorhandenen Datenbank (MIT ERSETZEN). Kehren Sie nun zur Seite Allgemein zurück und klicken Sie auf OK, um die Datenbank wiederherzustellen.
Prajwal Bhat
quelle