Atualize o banco de dados do SQL Server 2000 para 2008 R2 e habilite novos recursos

23

Atualizei recentemente o banco de dados do SQL Server 2000 para 2008 R2.


O que eu fiz foi:

  1. Desligar o serviço SQL Server 2000 (expresso) na máquina antiga,
  2. Mova os arquivos de dados ( mydatabase.mdf e mydatabase.ldf ) para a nova máquina,
  3. Execute o SQL Server Management Studio 2008,
  4. Conecte-se ao mecanismo de banco de dados local,
  5. Anexe arquivos de dados ao banco de dados.
  6. 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:

  1. use novos recursos, como soma de verificação e modelo de recuperação completa,
  2. tornar esse banco de dados exatamente como foi criado no SQL 2008 R2,
  3. torne esse banco de dados totalmente compatível, correto e perfeito 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, tenha a calma de que tudo está bem 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, outro diz para fazer outras coisas ... e agora não sei nada, por isso quero ouvir a opinião de pessoas experientes e instruções claras e passo a passo. Eu trabalho para uma empresa muito pequena, estou sozinha e não quero estragar tudo.


Senhor, estou realmente impressionado com a sua resposta, não esperava tanto.


Então, alguns comentários:

  1. O banco de dados está agora em produção. Como eu disse, ele foi atualizado usando o método deattach-attach, como descrevi na primeira postagem e conforme descrito no MSDN: http://msdn.microsoft.com/en-us/library/ms189625.aspx Ele precisava ser feito rapidamente, então fui forçado a fazer dessa maneira. Vamos esquecer o quão inapropriado poderia ser e focar na situação atual.

  2. Os usuários / persmissão não são um problema aqui - são poucos e as permissões são simples.

  3. O aplicativo que usa banco de dados é compatível com o SQL 2000 até 2012, portanto também não é um problema.

  4. O arquivo de banco de dados (MDF) não é grande - apenas cerca de 1 GB.


Mais algumas perguntas:

  1. Você recomenda o uso do método de backup / restauração, mas fiz como descrito acima; posso encontrar problemas agora? Tudo funcionou sem nenhum problema.

  2. Sobre o modelo de soma de verificação e recuperação completa: ele não estava disponível / ativado no SQL 2000, então eu quero usá-los agora. Você disse que a única coisa que preciso fazer é ativar essas opções nas propriedades do banco de dados? Eu li em algum lugar, que não é suficiente e também devo reconstruir índices ou algo assim. Eu realmente não sei, só estou perguntando.

  3. Estou preparando para migrar esse banco de dados para o SQL 2012 - então, primeiro, foi do SQL 2000 para 2008 R2, agora será do 2008 R2 para 2012 (era impossível fazer isso diretamente devido à falta de suporte dos bancos de dados SQL 2000 no SQL 2012). Então eu entendo que devo seguir seu guia: faça backup em 2008 R2 e restaure em 2012, e faça o resto de suas dicas, certo?

  4. Por favor, explique-me o método de backup / restauração: É como um despejo de banco de dados para consultas SQL e, em seguida, restaurando-o executando várias consultas? Esse método, a propósito, "desfragmentará" meu banco de dados? Caso contrário, como desfragmentar / otimizar manualmente?

  5. 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?

  6. Modo de recuperação completa com backups freqüentes do log de transações - onde está armazenado o log de transações - é o arquivo LDF? Como devo fazer o backup corretamente?


Sei que minhas perguntas podem parecer bobagens, não sou administrador profissional de banco de dados, mas sou a única pessoa aqui que pode executar essa tarefa "hard core" como atualizar o mecanismo de banco de dados. Também tenho certeza de que seu conhecimento ajudará muito outras pessoas como eu.

Muito obrigado pelo seu tempo e conhecimento, eu realmente aprecio isso.

Mark Saelic
fonte
2
Da próxima vez, recomendo fazer backup / restauração em vez de desligar o SQL Server, mover os arquivos e anexá-los. Só assim, tantas coisas que podem dar errado. No lado positivo, parabéns por finalmente abandonar o software de banco de dados de 14 anos!
Aaron Bertrand

Respostas:

37

A etapa principal a ser executada é executar o Supervisor de Atualização no banco de dados SQL Server 2000 e solucionar todos os problemas relatados por ele.

Como prática recomendada, use a ferramenta Upgrade Advisor no 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 Supervisor de Atualização detecte problemas que podem não aparecer em uma simples varredura do banco de dados, como o TSQL incorporado nos aplicativos. Você pode capturar traços de TSQL usando o SQL Profiler no servidor SQL Server 2000 durante o horário normal e analisá-los usando o Supervisor de Atualização.

Portanto, o restante das etapas seria:

No dia da migração:

  1. script nossos logins no servidor 2000 usando sp_help_revlogin .
  2. Script fora de trabalhos e servidores vinculados do sql 2000 server.
  3. pare os servidores da web que se conectam ao servidor 2000. Verifique se nenhum aplicativo está se conectando ao servidor 2000.
  4. faça backup de seus bancos de dados e restaure no servidor sql 2008 R2 de destino.
  5. Depois que seus backups forem restaurados no servidor 2008 R2, execute a saída de sp_help_revlogin no servidor 2008 R2 para recriar logins.
  6. Sincronize usuários órfãos (se houver) e recrie trabalhos de agentes sql e servidores vinculados no novo servidor.
  7. altere o nível de compatibilidade nos bancos de dados restaurados para 100.
  8. Dbcc checkdb com as opções all_errormsgs e data_purity ativadas: DBCC CHECKDB ('<db_name_goes_here>' ) WITH ALL_ERRORMSGS,NO_INFOMSGS, DATA_PURITY
  9. execute DBCC UPDATEUSAGE nos bancos de dados restaurados DBCC UPDATEUSAGE('database_name') WITH COUNT_ROWS
  10. Atualize as estatísticas em todas as tabelas com varredura completa: Update Statistics table_name with FULLSCAN
  11. Opcional: Verifique os níveis de fragmentação e, dependendo do nível de fragmentação, execute uma reorganização / reconstrução de todos os índices. Você pode usar os scripts do Ola .
  12. Recompile todos os SPs usando sp_recompile 'procedureName'
  13. Atualize suas visualizações SP_REFRESHVIEW view_name
  14. certifique-se de alterar a opção do banco de dados: página, verifique para CHECKSUM.
  15. Altere o modelo de recuperação (se diferente do sql 2000) para COMPLETO. Se você mudar para o modelo de recuperação COMPLETO, certifique-se de fazer backups do log de transações com freqüência. Isso o ajudará a recuperar o point-in-time, além de não inchar seu T-Log.
  16. No SQL Server 2005 e versões posteriores , o Database Mail foi introduzido. Então você precisa migrar do SQLMail para o Database Mail.

    USE [master]
    GO
    sp_configure 'show advanced options',1
    GO
    RECONFIGURE WITH OVERRIDE
    GO
    sp_configure 'Database Mail XPs',1
    GO
    RECONFIGURE 
    GO

Além disso, se você tiver alguma replicação, precisará redefini-la. Se algum DR, como loggingping ou Mirroring (novo em 2005 e posteriores, mas depreciado em 2012), você também precisará redefini-lo.

Os pacotes antigos do DTS precisam ser migrados para o SSIS usando C:\Program Files\Microsoft SQL Server\100\DTS\Binn\DTSMigrationWizard.exe(linha de comando) ou usando o Assistente de Migração de Pacotes .

Além disso, você pode usar meu script encontrado em /dba//a/36701/8783 . No entanto, ele usa o método desanexar / anexar, eu recomendo que você use o método BACKUP / RESTORE . Mude o script de acordo.


Como uma nota rodapé:

  • ative a Inicialização instantânea de arquivos no novo servidor.
  • Tem vários arquivos de dados tempdb com tamanho igual.
  • Ativar sinalizador de rastreamento 1118
  • Configure a memória máxima e mínima corretamente. Especialmente memória máxima longe do padrão.
  • Ajuste corretamente as configurações do MAXDOP. Consulte /dba//a/36578/8783 para obter mais detalhes.
  • O melhor é instalar o sp_Blitz do Brent Ozar. Execute-o e resolva os problemas críticos e de alta prioridade relatados por ele.
  • Você pode até usar o SQL Power Doc da kendalvandyke - o SQL Power Doc funciona com todas as versões do SQL Server do SQL Server 2000 a 2012 e todas as versões do Windows Server e Windows Operating Systems do Windows 2000 e Windows XP ao Windows Server 2012 e Windows 8. Também útil para o planejamento de atualizações - veja quais recursos ocultos estão em uso em uma instância.
  • Ative Otimizar para cargas de trabalho ad-hoc e opções de compactação de backup padrão.

Vamos resolver suas perguntas ...

O que mais devo fazer para concluir a migração?

Consulte a minha resposta. Isso ajudará você a elaborar adequadamente um plano de migração. Sempre teste seu plano de migração em um UAT (não produção) junto com o teste de aplicativo adequado por usuários corporativos.

use novos recursos, como soma de verificação e modelo de recuperação completa.

CHECKSUMé novo no SQL Server 2005 e superior. Eu o cobri como parte das etapas de migração descritas acima.

full recovery modelnã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 freqüentes do log de transações permitirá restaurar o ponto no tempo e o local, reduzindo a quantidade de perda de dados.

torne esse banco de dados exatamente como foi criado no SQL Server 2008 R2.

torne esse banco de dados totalmente compatível, correto e perfeito para o novo mecanismo de banco de dados SQL 2008 R2.

Não entendo isso completamente! Mas as etapas de migração acima ajudarão você. Você só precisa restaurar o banco de dados e alterar o nível de compatibilidade 10, 100juntamente com as etapas acima.

Eu só quero saber como converter correta e completamente o banco de dados antigo do SQL Server 2000 para o novo banco de dados 2008 R2, ter a calma de que tudo está bem e ser feliz com todos os novos recursos.

Você deve ter cuidado com isso, pois isso também exigirá alterações no código do 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 - FORNECIDO que você fez um teste de regressão completo do seu aplicativo em um ambiente UAT ou DEV. Isso lhe dará mais confiança quando você faz a migração real no PROD.


Nota: Acima estão as etapas que eu lembro e tenho certeza de que nada foi deixado de fora. Se perceber que perdi algumas coisas, adicionarei ou outros especialistas neste site - fique à vontade para adicionar!

Tudo o que foi descrito acima precisa primeiro ser reproduzido em um ambiente de NÃO PRODUÇÃO para evitar surpresas durante a migração real.

----------

Mais algumas perguntas:

Você recomenda o uso do método de backup / restauração, mas fiz como descrito acima; posso encontrar problemas agora? Tudo funcionou sem nenhum problema.

Se tudo funcionou bem e você conseguiu anexar o banco de dados, NÃO, você não terá problemas. Desanexar / Anexar vs Backup / Restauração é apenas um método de como você move seus bancos de dados para um local diferente. Apenas para sua informação. O backup / restauração é mais seguro e confiável, como se algo desse errado (nos piores casos), então você tem um backup para restaurar e recuperar seus bancos de dados.

Sobre o modelo de soma de verificação e recuperação completa: ele não estava disponível / ativado no SQL Server 2000, por isso quero usá-los agora. Você disse que a única coisa que preciso fazer é ativar essas opções nas propriedades do banco de dados? Eu li em algum lugar, que não é suficiente e também devo reconstruir índices ou algo assim. Eu realmente não sei, só estou perguntando.

Como eu disse, a soma de verificação é nova na versão 2005 e posteriores. É um mecanismo pelo qual o SQL Server detectará corrupção de página, principalmente devido a E / S. Consulte a minha resposta aqui para mais detalhes.

Para ativar o CHECKSUM e alterar o modelo de recuperação para COMPLETO, você pode fazer isso usando o código T-SQL abaixo:

USE master;
GO
ALTER DATABASE [your_database_name] -- change this !!
SET RECOVERY FULL, PAGE_VERIFY CHECKSUM;
GO

Nota: Depois de definir as opções do banco de dados, elas serão mantidas quando você fizer a migração de 2008R2 para 2012.

Estou me preparando para migrar esse banco de dados para o SQL Server 2012 - então, primeiro, foi de 2000 a 2008 R2, agora será de 2008 R2 a 2012 (era impossível fazer isso diretamente devido à falta de suporte aos bancos de dados 2000 no SQL Server 2012). Então eu entendo que devo seguir seu guia: faça backup em 2008 R2 e restaure em 2012, e faça o resto de suas dicas, certo?

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 fazer isso.

Por favor, explique-me o método de backup / restauração: É como um despejo de banco de dados para consultas SQL e, em seguida, restaurando-o executando várias consultas? Esse método, a propósito, "desfragmentará" meu banco de dados? Caso contrário, como desfragmentar / otimizar manualmente?

O backup / restauração é ... semelhante ao dump and load usado no Sybase, Oracle ou provavelmente no MySQL também. É apenas o SQL Server o chama .. backup / restore.

A deve ler: Noções básicas sobre backups do SQL Server por Paul Randall.

Sintaxe simples (para sintaxe completa, consulte BOL ):

backup database database_name
to disk = 'D:\backup\database_name_full.bak'
with init, stats =10

Em seguida, a restauração pode ser feita no servidor de destino como:

- supondo que o layout do disco do destino não corresponda ao do servidor de origem

restore database database_name
from disk = 'D:\backup\database_name_full.bak'
move 'logical_data_fileName' to 'physical_path\database_name.mdf'
move 'logical_log_fileName' to 'physical_path\database_name_log.ldf'
with recovery, stats = 10

- supondo que o layout do disco do destino corresponda ao do servidor de origem

restore database database_name
from disk = 'D:\backup\database_name_full.bak'
with recovery, stats = 10

Esse método, a propósito, "desfragmentará" meu banco de dados? Caso contrário, como desfragmentar / otimizar manualmente?

O backup / restauração não desfragmentará seu banco de dados. Você precisa usar o Alter Index Reorganize ou Rebuild, dependendo do seu nível de fragmentação.

Como você é novo no SQL Server, recomendo que você use o Ola Hallengren's:

Como estávamos usando o SQL Server 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 Server 2008, isso ainda não é melhor do que usar a função de backup no Management Studio?

Parar o mecanismo é 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 possui um artigo da KB com o script para fazer backups automatizados - Como agendar e automatizar backups de bancos de dados do SQL Server no SQL Server Express

Modo de recuperação completa com backups freqüentes do log de transações - onde está armazenado o log de transações - é o arquivo LDF? Como devo fazer o backup corretamente?

Todo banco de dados do 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 o log de transações é '.LDF', mas pode ser qualquer.

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 possui excelentes links.


EDIT: 24/08/2016. Isso ajudará futuros leitores:

Se você estiver migrando toda a instância de uma versão para outra, eu recomendo usar a solução baseada no PowerShellStart-SqlMigration

insira a descrição da imagem aqui

Kin Shah
fonte