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.


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?


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.


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


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

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


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