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.

Funky
fonte

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?

A. Thomas
fonte
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.

Kenneth Fisher
fonte
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 ...

sonjz
fonte
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
Shadi Namrouti
fonte
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

sua mãe
fonte
4
Olá, Bem-vindo ao site. Gostamos de um pouco mais de detalhes sobre como isso funcionaria ou por que.
Tom V - Team Monica