SQL Server-Datenbankwiederherstellungsfehler: Die angegebene Umwandlung ist ungültig. (SqlManagerUI)

91

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 .bakDatei 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.

Lernen
quelle
Ich bin kein Profi in dieser, aber kurze Frage, ist x86- und x64-Architektur in der Datenbank kompatibel?
Gustav Klimt
Ich hatte zu diesem Zeitpunkt eine vorherige Wiederherstellungsdatenbank und hatte kein solches Problem. Aus irgendeinem Grund werden jetzt Fehler generiert. Ich bin mir nicht sicher, ob die Datenbankserver-Kollatierung Probleme verursacht
Lernen
Versuchen Sie ,REPLACE, dem T-SQL-Befehl etwas hinzuzufügen , um die vorhandene AlHabtoorPublications-Datenbank zu überschreiben.
SchmitzIT
Ich habe heute bei der Arbeit das gleiche Problem festgestellt. Es scheint, als ob die Überprüfung der Dateigröße nach der FTP-Übertragung nicht ausreicht. Die Datei scheint sehr sensibel zu sein. Das Problem wurde behoben, indem die Datei vor dem Ausführen der Übertragung komprimiert wurde.
Rofans91
Scenerio Ich habe eine Datenbanksicherung unter SQL SERVER 2008 durchgeführt und versucht, sie unter SQL SERVER 2008 R2 wiederherzustellen. Im Idealfall sollte es einwandfrei funktionieren, aber bei der Auswahl der Sicherungsdatei hat SQL Management Studio 2208 R2 den Fehler "Angegebene Umwandlung ist nicht angegeben. (SqlManagerUI)" ausgelöst. Grund und Fehlerbehebung Dies war auf eine Beschädigung der .BAK-Datei während der FTP-Übertragung zurückzuführen (der Übertragungsmodus ist auf ASCII eingestellt). Denken Sie immer daran, den FTP-Übertragungsmodus beim Übertragen der Datenbank-BAK-Datei auf BINARY zu setzen.
Rohan Sarkar

Antworten:

40

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:

Use Master
Go
RESTORE DATABASE Publications
  FROM DISK = 'C:\Publications_backup_2012_10_15_010004_5648316.bak'
  WITH 
    MOVE 'Publications' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.mdf',--adjust path
    MOVE 'Publications_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.ldf'
, REPLACE -- Add REPLACE to specify the existing database which should be overwritten.
SchmitzIT
quelle
Seltsamerweise habe ich Ihre ursprüngliche Aussage wiederverwendet. Auf jeden Fall war das einzige, was ich hinzufügte, die letzte Zeile: , REPLACE
SchmitzIT
1
Eigentlich zeigt das Failed: 38an reached end of the file. (In einem Befehlsfenster ausführen NET HELPMSG 38). Das deutet normalerweise auf eine beschädigte
SchmitzIT
Ich habe die Wiederherstellung mit einer etwas älteren .bak-Datei getestet, die ohne Probleme wiederhergestellt wurde. Es scheint, dass diese bestimmte .bak-Datei beschädigt ist
Lernen
Könnte ein Ergebnis des Absturzes gewesen sein. Es könnte Teile des Laufwerks verpfuscht haben. Schön zu hören, dass Sie es geschafft haben, das Problem mit einem anderen Backup zu beheben :)
SchmitzIT
Ihr Skript generiert folgenden Fehler Nachricht 3203, Ebene 16, Status 1, Zeile 1 Lesen Sie weiter "C: \ Publications.bak" fehlgeschlagen: 38 (Text für diesen Fehler konnte nicht abgerufen werden. Grund: 15105) Nachricht 3013, Ebene 16, Status 1 , Zeile 1 RESTORE DATABASE wird abnormal beendet.
Lernen
163

Dies kann daran liegen, dass die Sicherungsdatei der SQL Server 2012-Version in SQL Server 2008 R2 oder noch weniger wiederhergestellt wird.

Subhash Makkena
quelle
4
Man müsste stattdessen "Skript generieren" verwenden.
Kroiz
4
Das war mein Problem. Es scheint, als wäre es für MS nicht zu schwierig, in einigen dieser Fälle eine hilfreichere Botschaft zu übermitteln.
John Gilmer
Pinal Dave erklärt die Gründe hier - blog.sqlauthority.com/2015/06/01/…
shrivb
15

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:

RESTORE FILELISTONLY
FROM DISK = location of your.bak file

Und von dort aus habe ich eine Wiederherstellungsanweisung mit MOVElogischen Namen ausgeführt.

RESTORE DATABASE database1
FROM DISK = '\\database path\database.bak'
WITH
MOVE 'File_Data' TO 'E:\location\database.mdf',
MOVE 'File_DOCS' TO 'E:\location\database_1.ndf',
MOVE 'file' TO 'E:\location\database_2.ndf',
MOVE 'file' TO 'E:\location\database_3.ndf',
MOVE 'file_Log' TO 'E:\location\database.ldf'

Als die Wiederherstellung abgeschlossen war, weinte ich fast vor Freude.

Viel Glück!

Sara Anderson Noonan
quelle
4

Im Folgenden können zwei Gründe für dieses Problem aufgeführt sein:

  1. Die Sicherung unter SQL 2012 und Restore Headeronly wurde nur in SQL 2008 R2 durchgeführt

  2. Sicherungsmedien sind beschädigt.

Wenn wir den folgenden Befehl ausführen, können wir immer einen tatsächlichen Fehler finden:

restore headeronly
from disk = 'C:\Users\Public\Database.bak'

Geben Sie im Angebot den vollständigen Speicherort Ihrer Datenbankdatei an

Ich hoffe es hilft

Keren Caelen
quelle