Qual a forma mais correcta de migrar dados de SQL Server 2005 Express para SQL Server 2007 R2 Standard
Viva,
Estou agora a migrar alguns websites de um servidor antigo para um novo, e uma das coisas que preciso de fazer é migrar os dados.
O servidor antigo tem SQL Server 2005 Express, o novo é 2008 R2 Standard.
Qual é a forma mais correcta de fazer esta migração?
A minha primeira aproximação seria backup da bd de 2005 e restore em 2008, mas tenho curiosidade em saber se ha melhores formas.
Obrigado,
Bruno Lopes
- Fóruns:
- Clique Iniciar Sessão ou registar-se para colocar comentários

Migração de BD de SQL 2005 Express para SQL Server 2008 R2 Std
Boas,
Em primeiro lugar como estamos a partir de uma instancia Express as opções são mais limitadas. A meu ver o Backup/Restore oferece a possibilidade de efectuar uma operação de Rollback mais fácil,
Quando se efectua o detach na origem a informação da base de dados é retirada da master o que implica que se usarmos um move dos ficheiros e fizermos um attach dos mesmos na nova instância já não poderemos efectuar a operação inversa, para isso teremos de ter duas cópias dos ficheiros. Consideranto o processo de cópia dos ficheiros e posterior attach, poderá ser mais viavel, efectuar a cópia após a paragem do serviço na origem, seguindo-se a copia dos ficheiros para a nova localização e depois o respectivo attach.
Após o processo de restore, deverá ser garantido que ou não se efectuam alterações no destino ou que se tem a capacidade de reproduzir as mesmas alterações efectuadas na nova copia da BD, na BD de origem (através de T-SQL, de processos de Import/Export ou por via aplicacional).
Como estamos a falar de uma ediçao express, não deverão existir processos desenvolvidos em cima do SQL Server Agent, pelo que não existe a preocupação de migrar Jobs.
http://www.microsoft.com/sqlserver/2005/en/us/compare-features.aspx
Nem existe a preocupação de migrar packages de Integration services.
Pelo que a maior preocupação será em migrar os Logins existentes na instancia original para a instancia de destino, para que os logins usados pela(s) aplicação(ões) cliente possam continuar a funcionar. Será também importante garantir que essas aplicações são redireccionadas para a nova instância, ou por alteração da connection string, alias, dns record:
http://blogs.msdn.com/b/blogdoezequiel/archive/2010/06/21/the-sql-swiss-army-knife-2.aspx
Em relação à DB poderá ser utilizado o Upgrade Advisor para validar se esta ferramenta detecta algumas issues que possam ser corrigidas antes da migração (isto claro tendo em conta se queremos ou não manter o compatibility level)
http://msdn.microsoft.com/en-us/library/ms189624(SQL.90).aspx
http://msdn.microsoft.com/en-us/library/bb510680.aspx (compatibility level)
Após a migração deverá ser efectuado de imediato um Backup da ou das BDs para garantir que temos um backup válido após a migração de versão de SQL Server, o que provoca o upgrade automatico da versão da BD.
Podem ser considerados processos de manutenção para efectuar a validação da consistência da BD (DBCC CHECKDB), rebuild dos indices, upgrade das estatisticas (nas colunas das tabelas) isto para garantir que o QP tem ao seu dispor a informação mais actualizada, quando começar a executar os pedidos vindos da aplicação cliente.
Deverão ser feitos testes com, por exemplo, Database Backup Compression e validadas que outras funcionalidades poderão ser usadas na Standard Edition do 2008 R2:
http://msdn.microsoft.com/en-us/library/cc645993.aspx#High_availability
Lista de novidades ao nivel do Database Engine, no sql server 2008 R2:
http://msdn.microsoft.com/en-us/library/bb510411.aspx
Cumpts,
Luís.
Viva, As aplicações que usam
Viva,
As aplicações que usam estas BDs não vão ser alteradas, na sua maioria, pelo que o aproveitamento de novas capacidades seria maioritariamente ao nivel da base de dados.
Curiosamente estava agora a ver e apenas tenho nivel de compatibilidade Sql Server 2008 (100). Esqueci-me de alguma coisa?
Alguma configuração extra que valha a pena fazer nas BDs agora que vão estar em 2008?
Em relação á migração acho que vou mesmo por backup/restore.
Obrigado,
Bruno Lopes
2008 R2
Acho que o nível de compatilibilidade (compatibility level - COMPATIBILITY_LEVEL) de R2 é 100, a contrário de número interno de engine que é de facto 105. Mesmo se vais utilizar o «alter database set compatibility_level», não existe o 105, mas sim o 100.
Atenção - posso estar errado, pois não experimentei muito com o R2. :(
Espero que alguem aqui ajuda confirmar esta questão.
Bruno, existe muita coisa que podes reaproveitar, pois a differença entre 2008 e 2005 é significativa - Date, Time, DateTime2 - são os novos tipos de dados que permitem poupar no espaço. Dependente de drivers, talvez consegues alterar algumas colunas sem mudar a aplicação. No 2008 R2 Standard podes utilizar a compressão de dados, e de qualquer modo - se tiveres stored procedures, podes começar a utilizar algumas «enhancements» como MERGE por exemplo, ou mesmo GROUPING SETS ;)
Outra coisa fantástica são colunas SPARSE - se tiveres muitos nulls - pode ser interessante a experimentar.
http://www.microsoft.com/sqlserver/2008/en/us/whats-new.aspx
Um abraço,
Niko
Migração
Viva Bruno !
Acho que a questão de migração também depende se tu queres aproveitar as novas funcionalidades de 2008/2008 R2 ou não. A mim também passou pela cabeça detach/attach como um modo bastante práctico e rápido, mas realmente o maior desafio será a reaproveitamento de novas funcionalidades - os novos tipos de dados, aproveitamento de compressão, etc.
Cumprimentos,
Niko Neugebauer
Viva Bruno, Realmente o
Viva Bruno,
Realmente o backup/restore ou o dettach/attach serão as formas mais rápidas de se migrarem bases de dados.
Não te esqueças que no fim da migração deverás alterar a compatibilidade da BD de 9 (SQL 2005) para 10.5 (SQL 2008 R2) de modo a poder aproveitar todas as potencialidades do SQL Server 2008 R2.
Um abraço,
Vitor Montalvão