la famiglia di supporti sul dispositivo non è stata formata correttamente. SQL Server non può elaborare questa famiglia di supporti


31

Sto provando a ripristinare un .BAK nel server SQL ma ottengo il seguente errore:

Messaggio 3241, livello 16, stato 7, riga 1 La famiglia di supporti sul dispositivo "c: \ glyn \ JA.bak" è formata in modo errato. SQL Server non può elaborare questa famiglia di supporti. Messaggio 3013, livello 16, stato 1, riga 1 RIPRISTINA DATABASE si sta chiudendo in modo anomalo.

Ho provato a ripristinare usando 2012, 2008 e persino 2005 ma non funziona nulla, ho usato la seguente query e attraverso il Tasks >> Back upma niente funziona, ecco il mio SQL:

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

Qualcuno ha qualche suggerimento? Ho letto che il bak potrebbe essere corrotto, è stato inviato al mio da un altro sviluppatore su DVD che sta lavorando al progetto.


Risposte:


12

Se si sta tentando di ripristinare un database più recente su una versione SQL precedente, è sempre possibile creare manualmente il database nella versione SQL precedente e utilizzare l'attività: generare script e includere i dati.

Salva su file -> Avanzate -> Tipi di dati nello script -> Schema e dati .

Assicurati anche di Script per versione server .

Questa potrebbe essere l'unica opzione supportata se stai provando a passare dal più recente SQL Server alla versione precedente.

Correlati: ripristinare il backup di SQL Server 2012 in un database di SQL Server 2008?


Sembra un hack ma immagino che questo abbia risolto questo problema nel mio caso.
jpierson,

7

Ho trovato questo che dice che il tuo file di backup è danneggiato. Possibilmente trasferito via FTP in modalità testo anziché binario.

E questo blog che elenca come qualcun altro ha risolto lo stesso problema.


8
"elenca il modo in cui qualcun altro ha risolto lo stesso problema" in genere sui siti della rete SE è necessario pubblicare elementi rilevanti come i post sul blog; impedisce il decadimento del collegamento
jcollum

6

Ho avuto lo stesso problema, il mio script stava specificando il tipo FILE errato, avevo un .bake stavo specificando FILE = 2quale è 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

Non sono sicuro che il comando RESTORE rilevi automaticamente o imposti un valore predefinito per questo ...


1
L'errore gira attorno a questo, il problema è quando si utilizza la GUI per ripristinare i database, SQL Managment Studio non fornisce informazioni dettagliate. Se si tenta di ripristinare utilizzando lo script t-sql, il server sql segnalerà di utilizzare l'opzione MOVE.
dlopezgonzalez,

5

Eseguire il seguente script sui server SQL di origine e di destinazione, le versioni devono corrispondere o la destinazione deve avere una versione successiva di SQL Server, altrimenti non è possibile ripristinare il file .bak:

SELECT @@Version

1
Il punto sulle versioni è stato ripetuto in altre risposte.
Andriy M,

1
@AndriyM hai ragione, ma mancava un'azione pratica. Non stiamo parlando di storia o geografia, alcuni comandi o codici dovrebbero essere menzionati.
Shadi Namrouti,


-4

elimina il file danneggiato ed esegui nuovamente il backup


4
Ciao, benvenuto nel sito. Ci piace un po 'più di dettaglio su come o perché questo dovrebbe funzionare.
Tom V - Team Monica
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.