web-dev-qa-db-fra.com

la famille de supports sur le périphérique est mal formée. SQL Server ne peut pas traiter cette famille de supports

J'essaie de restaurer un .BAK dans SQL Server mais j'obtiens l'erreur suivante:

Msg 3241, niveau 16, état 7, ligne 1 La famille de supports sur le périphérique "c:\glyn\JA.bak" est incorrectement formée. SQL Server ne peut pas traiter cette famille de supports. Msg 3013, niveau 16, état 1, ligne 1 RESTORE DATABASE se termine anormalement.

J'ai essayé de restaurer en utilisant 2012, 2008 et même 2005 mais rien ne fonctionne, j'ai utilisé la requête suivante et à travers le Tasks >> Back up mais rien ne fonctionne, voici mon SQL:

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

Est-ce que quelqu'un a des suggestions? J'ai lu que le bak pouvait être corrompu, il m'a été envoyé par un autre développeur sur DVD qui travaille sur le projet.

31
Funky

Si vous essayez de restaurer une base de données plus récente vers une ancienne version SQL, vous pouvez toujours simplement créer manuellement la base de données dans l'ancienne version SQL et utiliser la tâche - générer des scripts et inclure les données.

Enregistrer dans un fichier -> Avancé -> Types de données à script -> Schéma et données .

Assurez-vous également de Script pour la version du serveur .

Cela peut être la seule option prise en charge si vous essayez de passer de SQL Server plus récent à une version plus ancienne.

Connexes: Restaurer la sauvegarde SQL Server 2012 dans une base de données SQL Server 2008?

12
A. Thomas

J'ai trouvé ceci que indique que votre fichier de sauvegarde est corrompu. Peut-être transféré par FTP en mode texte plutôt qu'en binaire.

Et ce blog qui indique comment quelqu'un d'autre a résolu le même problème.

7
Kenneth Fisher

J'ai eu le même problème, mon script spécifiait le type de fichier incorrect, j'avais un .bak et je spécifiais FILE = 2 qui est un .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

Je ne sais pas si la commande RESTORE détecte automatiquement ou définit une valeur par défaut pour cela ...

6
sonjz

Exécutez le script suivant sur les serveurs SQL source et de destination, les versions doivent correspondre ou la destination doit avoir une version supérieure de SQL Server sinon vous ne pouvez pas restaurer le fichier .bak:

SELECT @@Version
6
Shadi Namrouti

La seule raison est que vous essayez de restaurer une sauvegarde de version inférieure, reportez-vous à: http://www.sqlservercentral.com/Forums/Topic1675066-1550-1.aspx?Update=1

1
Saurabh Sinha