Ich verwende SQL Server 2008 R2 Standard (Version 10.50.1600.1) für meine Produktionswebsite und SQL Server Express Edition mit Advanced Services (v10.50.1600.1) für meinen lokalen Host als Datenbank.
Vor ein paar Tagen stürzte mein SQL Server ab und ich musste eine neue 2008 R2 Express-Version auf meinem lokalen Host installieren. Es hat gut funktioniert, als ich einige ältere Versionen aus der Express Edition wiederhergestellt habe. Wenn ich jedoch versuche, die Datenbank aus einer .bak
Datei wiederherzustellen, die vom Produktionsserver stammt, verursacht dies den folgenden Fehler:
Fehler: Die angegebene Besetzung ist ungültig. (SqlManagerUI)
und wenn ich versuche, die Datenbank mit dem Befehl wiederherzustellen
Use Master
Go
RESTORE DATABASE Publications
FROM DISK = 'C:\Publications.bak'
WITH MOVE 'Publications' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.mdf',--adjust path
MOVE 'AlPublications_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.ldf'
Es wird ein anderer Fehler generiert
Meldung 3154, Ebene 16, Status 4, Zeile 1
Der Sicherungssatz enthält eine Sicherung einer anderen Datenbank als der vorhandenen Datenbank "Veröffentlichungen".
Meldung 3013, Ebene 16, Status 1, Zeile 1
RESTORE DATABASE wird abnormal beendet.
Ich habe die Versionen überprüft. Sie scheinen alle zu mir zu passen, wie im Bild unten gezeigt
Früher konnte ich eine Datenbank von der Standardversion auf die Express Edition wiederherstellen, aber jetzt schlägt sie fehl. Ich habe die Datenbank gelöscht und versucht, sie neu zu erstellen. Das scheitert auch.
Ich bin mir nicht sicher, was ich falsch mache. Ich würde mich über Hilfe in dieser Hinsicht freuen
Das Problem wurde behoben, da die .bak-Datei anscheinend beschädigt war. Als ich es mit einer anderen Datei versuchte, funktionierte es.
,REPLACE
, dem T-SQL-Befehl etwas hinzuzufügen , um die vorhandene AlHabtoorPublications-Datenbank zu überschreiben.Antworten:
Die GUI kann manchmal unbeständig sein. Der Fehler, den Sie bei der Verwendung von T-SQL erhalten haben, ist, dass Sie versuchen, eine vorhandene Datenbank zu überschreiben, aber nicht angegeben haben, die vorhandene Datenbank zu überschreiben / zu ersetzen. Folgendes könnte funktionieren:
quelle
, REPLACE
Failed: 38
anreached end of the file
. (In einem Befehlsfenster ausführenNET HELPMSG 38
). Das deutet normalerweise auf eine beschädigteDies kann daran liegen, dass die Sicherungsdatei der SQL Server 2012-Version in SQL Server 2008 R2 oder noch weniger wiederhergestellt wird.
quelle
Endlich wurde dieser Fehler bei einer Wiederherstellung behoben. Ich bin aus Frustration zu SQL2012 gewechselt, aber ich denke, dies würde wahrscheinlich immer noch auf 2008R2 funktionieren. Ich musste die logischen Namen verwenden:
Und von dort aus habe ich eine Wiederherstellungsanweisung mit
MOVE
logischen Namen ausgeführt.Als die Wiederherstellung abgeschlossen war, weinte ich fast vor Freude.
Viel Glück!
quelle
Im Folgenden können zwei Gründe für dieses Problem aufgeführt sein:
Die Sicherung unter SQL 2012 und Restore Headeronly wurde nur in SQL 2008 R2 durchgeführt
Sicherungsmedien sind beschädigt.
Wenn wir den folgenden Befehl ausführen, können wir immer einen tatsächlichen Fehler finden:
Geben Sie im Angebot den vollständigen Speicherort Ihrer Datenbankdatei an
Ich hoffe es hilft
quelle