família de mídia no dispositivo está formada incorretamente. O SQL Server não pode processar esta família de mídia


31

Estou tentando restaurar um .BAK no SQL server, mas obtém o seguinte erro:

Msg 3241, Nível 16, Estado 7, Linha 1 A família de mídia no dispositivo 'c: \ glyn \ JA.bak' está formada incorretamente. O SQL Server não pode processar esta família de mídia. A mensagem 3013, nível 16, estado 1, linha 1 RESTORE DATABASE está sendo finalizada de maneira anormal.

Eu tentei restaurar usando 2012, 2008 e até 2005, mas nada funciona, eu usei a seguinte consulta e através do Tasks >> Back upmas nada funciona, aqui está o meu SQL:

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

Alguém tem alguma sugestão? Eu li que o bak pode estar corrompido, foi enviado ao meu por outro desenvolvedor em DVD que está trabalhando no projeto.


Respostas:


12

Se você estiver tentando restaurar um banco de dados mais recente para uma versão mais antiga do SQL, sempre poderá criar manualmente o banco de dados na versão mais antiga do SQL e utilizar os scripts de geração de tarefas e incluir os dados.

Salvar em Arquivo -> Avançado -> Tipos de dados em script -> Esquema e dados .

Verifique também o Script para a versão do servidor .

Essa pode ser a única opção suportada se você estiver tentando passar do SQL Server mais recente para a versão mais antiga.

Relacionado: Restaurar o backup do SQL Server 2012 em um banco de dados do SQL Server 2008?


Parece um hack, mas acho que isso funcionou com esse problema no meu caso.
jpierson

7

Eu encontrei isso que diz que seu arquivo de backup está corrompido. Possivelmente transferido por FTP no modo de texto em vez de binário.

E este blog que lista como outra pessoa resolveu o mesmo problema.


8
"lista como outra pessoa resolveu o mesmo problema" geralmente nos sites da rede SE, você deve postar partes relevantes, como postagens no blog; ele impede ligação decadência
jcollum

6

Eu tive o mesmo problema, meu script estava especificando o tipo de arquivo incorreto, eu tinha um .bake eu estava especificando FILE = 2qual é a .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

Não tenho certeza se o comando RESTORE detecta automaticamente ou define um padrão para isso ...


1
O erro gira em torno disso, o problema é que quando você usa a GUI para restaurar bancos de dados, o SQL Managment Studio não fornece informações detalhadas. Se você tentar restaurar usando o script t-sql, o sql server informará que você use a opção MOVE.
dlopezgonzalez 01/12/2015

5

Execute o script a seguir nos servidores SQL de origem e destino; as versões devem corresponder ou o destino deve ter uma versão superior do SQL Server; caso contrário, você não poderá restaurar o arquivo .bak:

SELECT @@Version

1
O ponto sobre versões foi repetido em outras respostas.
Andriy H

1
@AndriyM você está certo, mas faltava uma ação prática. Não estamos falando de história ou geografia, algum comando ou código deve ser mencionado.
Shadi Namrouti


-4

excluir arquivo corrompido e executar novamente o backup


4
Olá, Bem-vindo ao site. Gostamos de um pouco mais de detalhes sobre como isso funcionaria ou por que.
Tom V - Team Monica
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.