Die Medienfamilie auf dem Gerät ist falsch gebildet. SQL Server kann diese Medienfamilie nicht verarbeiten

31

Ich versuche, eine .BAK in SQL Server wiederherzustellen, erhalte jedoch den folgenden Fehler:

Meldung 3241, Ebene 16, Status 7, Zeile 1 Die Medienfamilie auf Gerät 'c: \ glyn \ JA.bak' ist falsch gebildet. SQL Server kann diese Medienfamilie nicht verarbeiten. Meldung 3013, Ebene 16, Status 1, Zeile 1 DATENBANK WIEDERHERSTELLEN wird abnormal beendet.

Ich habe versucht, mithilfe von 2012, 2008 und sogar 2005 wiederherzustellen, aber nichts funktioniert. Ich habe die folgende Abfrage verwendet und über das, Tasks >> Back upaber nichts funktioniert, ist hier mein SQL:

RESTORE DATABASE JA FROM DISK='c:\glyn\JA.bak'

Hat jemand irgendwelche Vorschläge? Ich habe gelesen, dass der Bak beschädigt sein könnte, er wurde von einem anderen Entwickler auf DVD an mich gesendet, der an dem Projekt arbeitet.

Funky
quelle

Antworten:

12

Wenn Sie versuchen, eine neuere Datenbank auf eine ältere SQL-Version zurückzusetzen, können Sie die Datenbank immer einfach manuell in der älteren SQL-Version erstellen und die Aufgabe verwenden - Skripte generieren und die Daten einschließen.

In Datei speichern -> Erweitert -> Datentypen in Skript -> Schema und Daten .

Stellen Sie außerdem sicher, dass für die Serverversion ein Skript erstellt wurde .

Dies ist möglicherweise die einzige unterstützte Option, wenn Sie versuchen, von einer neueren SQL Server-Version zu einer älteren Version zu wechseln.

Verwandte Themen : Wiederherstellen der SQL Server 2012-Sicherung in einer SQL Server 2008-Datenbank?

A. Thomas
quelle
Scheint wie ein Hack, aber ich denke, das hat dieses Problem in meinem Fall umgangen.
Jpierson
7

Ich habe festgestellt , dass Ihre Sicherungsdatei beschädigt ist. Möglicherweise per FTP im Textmodus anstatt binär übertragen.

Und dieser Blog listet auf, wie jemand anderes das gleiche Problem behoben hat.

Kenneth Fisher
quelle
8
"listet auf, wie jemand anderes das gleiche Problem behoben hat" Im Allgemeinen sollten Sie auf SE-Netzwerkseiten die relevanten Teile von Dingen wie Blog-Posts posten. es verhindert den Zerfall von Links
jcollum
6

Ich hatte das gleiche Problem, mein Skript spezifizierte den falschen FILE-Typ, ich hatte einen .bakund ich spezifizierte, FILE = 2welcher ein ist .trn.

USE [master]
RESTORE DATABASE [MyNewDB] FROM
DISK = N'D:\MyOldDB.bak'
WITH
    FILE = 1, -- 1 = .bak, 2 = .trn type backup
    MOVE N'MyOldDB' TO N'd:\data\MyOldDB.mdf',
    MOVE N'MyOldDB_log' TO N'd:\data\MyOldDB_log.ldf',
    NOUNLOAD,
    STATS = 5    
GO

Ich bin mir nicht sicher, ob der Befehl RESTORE dies automatisch erkennt oder als Standard festlegt ...

sonjz
quelle
1
Der Fehler behebt dies. Das Problem besteht darin, dass SQL Managment Studio keine detaillierten Informationen zur Wiederherstellung von Datenbanken über die grafische Benutzeroberfläche bereitstellt. Wenn Sie versuchen, mithilfe von t-sql-Skript wiederherzustellen, werden Sie vom sql-Server zur Verwendung der Option MOVE aufgefordert.
Dlopezgonzalez
5

Führen Sie das folgende Skript auf Quell- und Ziel-SQL-Servern aus. Die Versionen sollten entweder übereinstimmen oder das Ziel sollte eine höhere Version von SQL Server haben. Andernfalls können Sie die .bak-Datei nicht wiederherstellen:

SELECT @@Version
Shadi Namrouti
quelle
1
Der Punkt über Versionen wurde in anderen Antworten wiederholt.
Andriy M
1
@AndriyM du hast recht, aber eine praktische Aktion fehlte. Wir sprechen nicht über Geschichte oder Geographie, ein Befehl oder Code sollte erwähnt werden.
Shadi Namrouti
-4

Löschen Sie beschädigte Dateien und führen Sie das Backup erneut aus

deine Mutter
quelle
4
Hallo, Willkommen auf der Seite. Wir möchten ein bisschen mehr Details darüber, warum oder wie dies funktionieren würde.
Tom V - Team Monica