Recentemente, atualizei o banco de dados SQL Server 2000 para 2008 R2.
O que eu fiz foi:
- Desligue o serviço SQL Server 2000 (expresso) na máquina antiga,
- Mova os arquivos de dados ( mydatabase.mdf e mydatabase.ldf ) para uma nova máquina,
- Execute o SQL Server Management Studio 2008,
- Conecte-se ao mecanismo de banco de dados local,
- Anexar arquivos de dados ao banco de dados.
- Altere o nível de compatibilidade do banco de dados para SQL 2008 (100).
Pergunta: O que mais devo fazer para concluir a migração?
Eu quero:
- use novos recursos como soma de verificação e modelo de recuperação completa,
- fazer com que este banco de dados seja exatamente como foi criado no SQL 2008 R2,
- tornar este banco de dados totalmente compatível, correto e perfeitamente adequado para o novo mecanismo de banco de dados SQL 2008 R2.
Em outras palavras: eu só quero saber como converter correta e completamente o banco de dados SQL 2000 antigo para o novo banco de dados 2008 R2, fique tranquilo que tudo está bem feito e fique feliz com todos os novos recursos.
Estou fazendo essa pergunta, porque encontrei muitos sites na Internet que dizem tantas coisas diferentes que me deixam confuso: alguns dizem que é necessário reconstruir índices, outros dizem para fazer outras coisas... e agora não sei nada, então quero ouvir a opinião de uma pessoa experiente e instruções claras e passo a passo. Trabalho para uma empresa muito pequena, estou sozinho e não quero estragar as coisas.
Senhor, estou realmente impressionado com sua resposta, eu não esperava tanto.
Então alguns comentários:
O banco de dados já está em produção. Como eu disse, ele foi atualizado usando o método deattach-attach como descrevi no primeiro post e conforme descrito no MSDN: http://msdn.microsoft.com/en-us/library/ms189625.aspx Tinha que ser feito rapidamente, então fui forçado a fazer assim. Vamos esquecer o quão inapropriado poderia ser e focar na situação atual.
Os usuários/permissão não são um problema aqui - existem apenas alguns e as permissões são simples.
O aplicativo que usa banco de dados é compatível com SQL 2000 até 2012, então isso também não é um problema.
O arquivo de banco de dados (MDF) não é grande - apenas cerca de 1 GB.
Mais algumas perguntas:
Você recomenda usar o método de backup/restauração, mas eu fiz como escrito acima, então posso encontrar algum problema agora? Tudo funcionou sem nenhum problema.
Sobre o modelo de soma de verificação e recuperação completa: não estava disponível/habilitado no SQL 2000, então quero usá-los agora. Você disse que a única coisa que preciso fazer é habilitar essas opções nas propriedades do banco de dados? Eu li em algum lugar, que não é suficiente e eu também deveria reconstruir índices ou algo assim. Eu realmente não sei, só estou perguntando.
Estou me preparando para migrar este banco de dados para o SQL 2012 - então primeiro foi do SQL 2000 para o 2008 R2, agora será do 2008 R2 para o 2012 (foi impossível fazer isso diretamente devido à falta de suporte dos bancos de dados SQL 2000 em SQL 2012). Então entendo que devo seguir seu guia: faça backup em 2008 R2 e restaure em 2012, depois faça o resto de suas dicas, certo?
Por favor, explique-me o método de backup/restauração: É como um despejo de banco de dados para consultas SQL e depois restaurá-lo executando várias consultas? Esse método, por sinal, "desfragmentará" meu banco de dados? Se não, como desfragmentar/otimizá-lo manualmente?
Como estávamos usando o SQL 2000 Express por anos (sem interface de gerenciamento), estávamos fazendo backups simplesmente parando o mecanismo e RAR o diretório DATA. Por enquanto, como estamos no SQL 2008, isso ainda não é melhor do que usar a função de backup no Management Studio?
Modo de recuperação completa com backups frequentes do log de transações - Onde o log de transações é armazenado - é o arquivo LDF? Como devo fazer backup dele corretamente?
Eu sei que minhas perguntas podem parecer bobas, não sou administrador de banco de dados profissional, mas sou a única pessoa aqui que pode fazer uma tarefa "hard core" como atualizar o mecanismo de banco de dados. Tenho certeza também que seu conhecimento ajudará muito outras pessoas como eu.
Muito obrigado pelo seu tempo e conhecimento, eu realmente aprecio isso.
A etapa principal a ser executada é executar o Upgrade Advisor no banco de dados SQL Server 2000 e resolver todos os problemas relatados por ele.
Como prática recomendada, use a ferramenta Upgrade Advisor em seu banco de dados herdado do SQL Server 2000 e importe um arquivo de rastreamento para a ferramenta Upgrade Advisor para análise. O arquivo de rastreamento permite que o Upgrade Advisor detecte problemas que podem não aparecer em uma varredura simples do banco de dados, como TSQL incorporado em aplicativos. Você pode capturar rastreamentos de TSQL usando o SQL Profiler em seu servidor SQL Server 2000 durante o horário normal e analisar esses rastreamentos usando o Upgrade Advisor.
Assim, o restante dos passos seria:
No dia da migração:
DBCC CHECKDB ('<db_name_goes_here>' ) WITH ALL_ERRORMSGS,NO_INFOMSGS, DATA_PURITY
DBCC UPDATEUSAGE('database_name') WITH COUNT_ROWS
Update Statistics table_name with FULLSCAN
sp_recompile 'procedureName'
SP_REFRESHVIEW view_name
No SQL Server 2005 e superior, o Database Mail foi introduzido. Então você tem que migrar do SQLMail para o Database Mail.
Além disso, se você tiver alguma replicação, precisará redefini-la. Se algum DR como logshipping ou Mirroring (novo em 2005 e superior, mas depreciado em 2012), você também precisará redefini-lo.
Os pacotes DTS antigos precisam ser migrados para o SSIS usando
C:\Program Files\Microsoft SQL Server\100\DTS\Binn\DTSMigrationWizard.exe
(linha de comando) ou usando o Package Migration Wizard .Além disso, você pode usar meu script encontrado em https://dba.stackexchange.com/a/36701/8783 . No entanto, ele usa o método detach/attach, eu recomendo que você use o método BACKUP/RESTORE. Altere o script de acordo.
Como uma nota rodapé:
Vamos tirar suas dúvidas...
Consulte minha resposta. Isso ajudará você a elaborar um plano de migração adequadamente. Sempre teste seu plano de migração em um UAT (não produção) junto com o teste de aplicativos adequado por usuários de negócios.
CHECKSUM
é novo no SQL Server 2005 e superior. Eu abordei isso como parte das etapas de migração descritas acima.full recovery model
não é novo. Depende do seu tipo de negócio e determina a quantidade de dados que você pode perder em caso de desastre.O modo de recuperação completa com backups de log de transações frequentes permitirá que você restaure point-in-time e ali, reduzindo a quantidade de perda de dados.
Não entenda isso completamente! Mas as etapas de migração acima irão ajudá-lo. Você só precisa restaurar o banco de dados e alterar o nível de compatibilidade 10
100
junto com as etapas acima.Você precisa ter cuidado com isso, pois isso também exigirá alterações no código do seu aplicativo. Se o código do seu aplicativo for alterado para usar os novos recursos do SQL Server 2008 R2, você não encontrará nenhum problema - DESDE que tenha feito um teste de regressão completo do seu aplicativo em um ambiente UAT ou DEV. Isso lhe dará mais confiança ao fazer a migração real no PROD.
Nota: Acima estão os passos que eu consegui lembrar e tenho certeza de que nada é deixado de fora. Se eu perceber que perdi algumas coisas, vou adicioná-las ou a outros especialistas neste site - sinta-se à vontade para adicionar!
Tudo o que está descrito acima precisa primeiro ser reproduzido em um ambiente SEM PRODUÇÃO para evitar surpresas durante a migração real.
----------
Mais algumas perguntas:
Se tudo funcionou bem e você conseguiu anexar o banco de dados, NÃO , você não terá problemas. Desanexar/Anexar vs Backup/Restaurar é apenas um método de como você move seus bancos de dados para um local diferente. Apenas FYI .. Backup/Restore é mais seguro e confiável como se algo der errado (nos piores casos), então pelo menos você tem um backup para restaurar e recuperar seu banco de dados.
Como eu disse, checksum é novo na versão 2005 e superior. É um mecanismo pelo qual o SQL Server detectará corrupção de página, especialmente devido a E/S. Consulte minha resposta aqui para mais detalhes.
Para habilitar CHECKSUM, bem como alterar o modelo de recuperação para FULL, você pode fazer isso usando o código T-SQL abaixo:
Observação: depois de definir as opções do banco de dados, elas serão mantidas quando você fizer a migração de 2008R2 para 2012.
Sim por favor. Como eu disse, a restauração de backup é o método preferido , a menos que você tenha um bom motivo para não fazê-lo.
Backup/restauração é... semelhante ao dump e carregamento usado no Sybase, Oracle ou provavelmente MySQL também. É apenas o SQL Server que o chama de .. backup/restauração.
Uma leitura obrigatória: Noções básicas sobre backups do SQL Server por Paul Randall.
Sintaxe Simples (para sintaxe completa, consulte BOL ):
Em seguida, a restauração pode ser feita no servidor de destino como:
-- supondo que o layout do disco de destino não corresponda ao do servidor de origem
-- supondo que o layout do disco do destino corresponda ao do servidor de origem
backup/restauração não irá desfragmentar seu banco de dados. Você precisa usar Alter Index Reorganize ou Rebuild dependendo do seu nível de fragmentação.
Como você é novo no SQL Server, eu recomendo que você use o Ola Hallengren:
Parar o motor é a pior coisa que você pode fazer para fazer um backup !!
Leia o link de Paul sobre os backups que mencionei e use o script de Ola. A Microsoft tem um artigo da KB com o script para fazer backups automatizados - Como agendar e automatizar backups de bancos de dados SQL Server no SQL Server Express
Todo banco de dados SQL Server possui um log que registra todas as transações e modificações no banco de dados feitas por cada transação. O log de transações é um componente crítico de qualquer banco de dados.
A extensão de convenção de nomenclatura usual para log de transações é '.LDF', mas pode ser qualquer uma.
Não vou escrever mais sobre isso, pois isso tornará a resposta muito enxuta. Consulte Gerenciamento de log de transações e minha resposta aqui também tem links excelentes.
EDIT: 24/08/2016 .. Isso ajudará os futuros leitores:
Se você estiver migrando sua instância inteira de uma versão para outra, recomendo usar a solução baseada em PowerShell
Start-SqlMigration