Usuário com melhor resposta
Backup 2005 em 2000

Pergunta
-
Respostas
-
Jean,
Um backup criado no SQL Server 2005 com nível de compatibilidade 90, não é possível restaurar sobre o SQL Server 2000.
Agora se você tem um banco de dados no SQL Server 2005, com nível de compatiblidade 80, este é possível sim restaurar sobre uma base no SQL Server 2000.
O que eu já fiz aqui na empresa, neste situação, foi o seguinte, em uma base criada no SQL Server 2005:
1 - Alterei o nível de compatibilidade da base para 80.
2 - Realizei o backup full desta base, criando um novo arquivo de backup.
3 - Restaurei este arquivo de backup sobre a base SQL Server 2000.
4 - Alterei novamente o nível de compatibilidade da base para 90.
Mas gostaria de alertar que se você estiver utilizar recursos especificos do SQL Server 2005, e realizar alteração do nível de compatibilidade para 80(SQL Server 2000), este recursos vão parar de funcionar.
Você já pensou em fazer migração somente dos dados e não de todo o banco de dados?
Todas as Respostas
-
Jean,
Um backup criado no SQL Server 2005 com nível de compatibilidade 90, não é possível restaurar sobre o SQL Server 2000.
Agora se você tem um banco de dados no SQL Server 2005, com nível de compatiblidade 80, este é possível sim restaurar sobre uma base no SQL Server 2000.
O que eu já fiz aqui na empresa, neste situação, foi o seguinte, em uma base criada no SQL Server 2005:
1 - Alterei o nível de compatibilidade da base para 80.
2 - Realizei o backup full desta base, criando um novo arquivo de backup.
3 - Restaurei este arquivo de backup sobre a base SQL Server 2000.
4 - Alterei novamente o nível de compatibilidade da base para 90.
Mas gostaria de alertar que se você estiver utilizar recursos especificos do SQL Server 2005, e realizar alteração do nível de compatibilidade para 80(SQL Server 2000), este recursos vão parar de funcionar.
Você já pensou em fazer migração somente dos dados e não de todo o banco de dados?
-
Olá Jr,
Até onde tinha lido e estudado, eu achava que era impossível restaurar um backup de uma versão superior em uma versão anterior. No meu conhecimento, o backup aprensa a versão do SQL no backup e impede que o mesmo seja restaurado. Para mim o nível de compatibilidade referia-se apenas a instruções TSQL e não a questões de armazenamento.
O SQL Server 7 tem uma estrutura de armazenamento, enquanto o SQL Server 2000 e o 2005 tem outras. Embora todas muito parecidas, elas tem pequenas diferenças e melhoramentos e por isso um backup de uma edição superior não pode ser restaurado em uma edição anterior (embora o contrário seja verdadeiro).
Quando vi sua recomendação, fiquei bastante curioso, pois, parece ser possível. No entanto segui exatamente os seus procedimentos com o banco AdventureWorks do 2005, mas não consegui restaurá-lo no SQL Server 2000. Gostaria de saber exatamente como você conseguiu fazer isso. Segue meu roteiro
- Mudei o nível de compatibilidade do AdventureWorks para 80
- Fiz um backup
- Tentei visualizar as informações do backup (RESTORE FILE LISTONLY) e deu erro
- Tentei restaurar o backup (RESTORE DATABASE) e deu erro
Msg 3169, Level 16, State 1, Line 1
The backed-up database has on-disk structure version 611. The server supports version 539 and cannot restore or upgrade this database.
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.
Como você conseguiu fazer isso ? Normalmente eu exportaria todas as tabelas.
[ ]s,
Gustavo
-
-
Gustavo,
Realmente, eu já fiz isso algumas vezes em bancos de dados criado somente para teste, e tudo funcionou!!!
Mas em particular como eu destaquei para o Jean, este tipo de procedimento não é recomendado, justamente por estar trabalhando com bancos de dados de versões diferentes.
Prefiro somente fazer a migração dos dados, como você destacou fazer a exportação dos dados!!!
Outra coisa que já testei também foi a restauração de log's, de bancos de dados do SQL Server 2005 no SQL Server 2000, e também funcionou, mas isso eu fiz já faz muito tempo!!!
-
Oi Jr.,
É muito estranho às vezes funcionar e às vezes não... Eu tinha pra mim que isso era totalmente impossível. O próprio Upgrade Tecnical Reference diz que não é possível restaurar backups do 2005 no 2000. Você poderia me postar o script de criação que você utilizou, que service packs estavam instalados, etc. Fiquei muito curioso...
De qualquer forma como você mesmo disse não é recomendado. Vou continuar pelo método de exportar e usar esse como última alternativa.
[ ]s,
Gustavo
-
Gustavo,
Como eu mesmo destaquei, isso não é recomendado.
Já faz muito tempo que realizei este procedimento, inclusive foi em uma versão CTP do SQL Server 2005, nunca mais fiz isso.
Como também não utilizei nenhum script, fiz o processo normal de backup e restore.
-
Pessoal, por experiência própria mesmo um banco em modo de compatibilidade em 80, quando restaurado no SQL Server 2005 ele não mais será possível o restore no 2000, pois no momento que entra no novo engine ele é modificado internamente para que os metadados sejam correspondidos para o SQL Server 2005 e não mais 2000.
Podem tentar fazer esse tipo de restore, ele no mínimo vai dizer que não encontra uma tabela de sistema, exemplo clássico é a sysindexes.
Abraços,
-
-
Oi Rodrigo,
Esse é exatamente o meu entendimento. Me parece que o Jr. fez isso com um CTP.
Mas como hoje só temos Releases Oficiais de 2005, o único procedimento seria realmente exportar as tabelas.
Ainda não tivemos um retorno para saber se o problema foi resolvido, mas creio que o nível de compatibilidade não vai ser suficiente.
[ ]s,
Gustavo
-
Gustavo na realidade esse comportamento é esperado mesmo qdo você faz um detach e attach no servidor SQL Server 2005 a partir de um banco 2000 ou mesmo um restore.
Isso foi discutido no SQL Summit 2007, e a sugestão que tenho pra quem vai fazer isso, é teste, teste, teste, rode o upgrade advisor, verifique seus códigos, tem um documento de 400 páginas dizendo como realizar o processo de migração de 2000 para 2005, se eu achar o link eu faço um post aqui.
Abraços,
-
Oi Rodrigo,
Concordo com suas colocações. A única forma de ter certeza é testando de fato. O Upgrade Advisor e o Upgrade Technical Reference (o documento de 400 páginas que você se refere) são um ajuda valiosa, mas para o processo 2000 - 2005.
O que estávamos questionando é o backup de um banco 2005 sendo restaurado no 2000. Mas como você mesmo disse, isso não será possível por uma questão de atualização de metadados. Acho que mesmo a solução sendo válida para uma versão de avaliação (CTP) como o Jr. disse que fez, devemos ter o cuidado de repassar apenas soluções testadas e que funcionem com as Releases oficiais.
O documento que você mencionou (leitura obrigatória por sinal) pode ser obtido no link abaixo:
[ ]s,
Gustavo
-
Pessoal,
Apenas para reforçar, banco de dados migrado para SQL Server 2005...já era, nunca mais volta para SQL 2000 seja via backup ou detach\attach. E banco de dados criado nativamente no SQL Server 2005,pior ainda !!
Notem que quando vc migra um base 2000 para 2005 ela muda o número da versão, vc consegue ver isso através da procedure sp_helpdb <nomedabase) e neste caso, no 2005 o número de versão sempre é superior à versão do SQL Server 2000. Como não é possível fazer um downgrade de versão...já era.
A forma de voltar isso é apenas via DTS ou se preferir, criar um novo banco no SQL Server 2000, levar os scripts da base 2005 para a base 2000 e depois usar o utilitário bcp para fazer um export\import dos dados.
um abraço
Nilton Pinheiro