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.


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.

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.


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!


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

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.