Eu tenho um banco de dados em dev (SQL Server 2005 no Windows Server 2008) que preciso mover para prod (SQL Server 2000 no Windows Server 2003). Meu processo é o seguinte:
- Entre no dev, abra o SQL Server Management Studio
- Clique com o botão direito do mouse no banco de dados | Tarefas | Cópia de segurança. Mantenha todas as opções padrão (backup completo, etc.)
- Mova o arquivo .bak localmente para prod (sem unidade de rede), efetue login no prod e abra o SQL Server Enterprise Manager.
- Clique com o botão direito do mouse no nó Bancos de Dados | Todas as tarefas | Restaurar banco de dados.
- Altere Restaurar como banco de dados para refletir o mesmo nome de banco de dados.
- Clique no botão de opção "Do dispositivo". Clique em "Selecionar dispositivos"
- Clique em Restaurar de: Adicionar ..., navegue até o arquivo .bak (pequeno - apenas 6 MB)
Agora estou pronto para restaurar o banco de dados, clique em OK e recebo o seguinte erro:
"A família de mídia no dispositivo 'E: ... bak' está formada incorretamente. O SQL Server não pode processar esta família de mídia. RESTORE DATABASE está sendo finalizado de forma anormal."
Este erro é imediato.
Eu tentei algumas variações diferentes disso - restaurando o db para a máquina dev com um nome diferente do db e nomes de arquivos de log (onde ele se originou), criando um banco de dados vazio com o mesmo caminho físico para os arquivos anteriores e tentando restaurá-los, criando alguns arquivos .bak diferentes e certificando-se de que sejam verificados antes de enviá-los para o prod. Sei de fato que o diretório para os arquivos .mdf e .ldf existe no prod, embora os arquivos em si não existam. Se, antes de clicar em OK para restaurar, vá para a guia Opções, em seguida, recebo o seguinte erro:
Erro 3241: A família de mídia no dispositivo 'E: ... bak' está formada incorretamente. O SQL Server não pode processar esta família de mídia. RESTORE FILELIST está sendo finalizado de forma anormal.
Alguém tem alguma idéia brilhante?
Respostas:
Os cabeçalhos de backup no MSSQL2008 são diferentes dos do MSSQL2005, que provavelmente é a fonte do seu problema. Tente exportar o banco de dados em vez do paradigma de backup-restauração ou configure o MSSQL2008 no servidor DEV.
fonte
Como diz Mike Dimmick - o SQL 2000 não reconhecerá os backups do SQL 2005 (como o Word 2000 não reconhecerá os arquivos DOCX de 2007). Portanto, você terá que migrar seus dados em um formato de denominador comum mais baixo, como scripts SQL. Experimente o Assistente para publicação de banco de dados, que faz parte do SQL Server Hosting Toolkit, que gera um único arquivo SQL para o esquema e os dados.
fonte
Você pode avançar os backups na família SQL Server, ou seja, 2000 para 2005 ou 2008, mas não para trás: não é possível restaurar um backup do SQL Server 2005 no SQL Server 2000.
fonte
É possível que seja um problema de permissão que impede a criação do arquivo quando você tenta restaurar. Tente criar um novo banco de dados no destino com o mesmo nome que você deseja e, em seguida, restaurar por cima dele.
Além disso, se você estiver tentando restaurar o backup de um disco rígido externo ou de um compartilhamento de rede, tente copiar o arquivo de backup na máquina local antes de tentar a restauração.
fonte
Por padrão, existem dois exploradores de objetos do SQL Server 2005. Acho que você está experimentando o objeto server / sqlexpress. Tente restaurar para outro.
fonte
(Suspiro aliviado.) Ahhhhh, esse é o problema.
Eu tenho o SQL Server 2008 SP1 em execução em um PC remoto. Fiz backup do banco de dados, mas não consegui restaurar minha cópia local do SQL Server 2008 a partir do arquivo .bak.
Como [Yini] diz, isso se resumia à minha cópia do SQL Server 2008, abrindo minha instância do SQL Server 2005 no meu PC local, em vez da minha instância do SQL Server 2008. Gênio.
E eu concordo completamente com [Yini] - é justo, você não pode restaurar um backup do SQL Server 2008 em uma instância de 2005, mas a Microsoft poderia, pelo menos, nos enviar uma mensagem de erro decente.
"A família de mídia no dispositivo 'D: \ DatabaseBackup_21_02_2011.bak' está formada incorretamente. O SQL Server não pode processar esta família de mídia."
Meu backup não foi formado incorretamente. Ele simplesmente não pode ser restaurado em uma instância do SQL Server 2005 , mesmo quando estou executando o SQL Server 2008 SP1.
É realmente difícil colocar isso em uma mensagem de erro ............?
fonte
Algumas reflexões:
Qual é o tamanho do banco de dados que você está restaurando?
O único artigo de suporte sobre esse erro é para o SQL 2000 e fala sobre arquivos de log grandes. Enquanto você não estiver no SQL 2000, pode ajudar a tentar reduzir o tamanho dos logs primeiro, se eles forem particularmente grandes.
Você é capaz de restaurar o banco de dados no servidor Dev (como um nome de banco de dados diferente, para arquivos diferentes)? Isso provaria se o arquivo em si está bem no que diz respeito ao SQL 2005.
Você é capaz de restaurar outros bancos de dados desse servidor Dev para o Prod?
fonte
Olá pessoal, como Mike sugere que eu recomende o Assistente para publicação de banco de dados, ele faz um ótimo trabalho.
Aqui está uma solução alternativa que usei inicialmente que não sugeriria inteiramente - parece um pouco gueto .
1) Crie o db on prod, crie um usuário db com direitos apropriados, abra a porta do firewall que permita acesso remoto
2) No dev no SQL Server Management Studio, clique com o botão direito do mouse em db -> tasks -> export data. Ao selecionar o destino, especifique a porta xxx.xxx.xxx.xxx, 1764.
3) Selecione todas as tabelas para transferir, clique nas próximas 100 vezes e pronto.
AVISO: Isso não copia os procedimentos armazenados.
AVISO: Isso não copia Identidades para colunas int
ATUALIZAÇÃO: Parece que você não pode ir de 2005 a 2000. Encontrei o seguinte texto no link de publicação - parece que você pode usar meus métodos acima, mas também deseja criar scripts para todos os objetos e executá-los em 2000.
fonte