AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 50311
Accepted
saelic
saelic
Asked: 2013-09-23 08:18:27 +0800 CST2013-09-23 08:18:27 +0800 CST 2013-09-23 08:18:27 +0800 CST

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

  • 772

Recentemente, atualizei o banco de dados SQL Server 2000 para 2008 R2.


O que eu fiz foi:

  1. Desligue o serviço SQL Server 2000 (expresso) na máquina antiga,
  2. Mova os arquivos de dados ( mydatabase.mdf e mydatabase.ldf ) para uma nova máquina,
  3. Execute o SQL Server Management Studio 2008,
  4. Conecte-se ao mecanismo de banco de dados local,
  5. Anexar 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. fazer com que este banco de dados seja exatamente como foi criado no SQL 2008 R2,
  3. 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:

  1. 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.

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

  3. O aplicativo que usa banco de dados é compatível com SQL 2000 até 2012, então isso 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 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.

  2. 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.

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

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

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

sql-server-2000 sql-server-2008-r2
  • 1 1 respostas
  • 53427 Views

1 respostas

  • Voted
  1. Best Answer
    Kin Shah
    2013-09-23T10:26:29+08:002013-09-23T10:26:29+08:00

    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:

    1. script nossos logins no servidor 2000 usando sp_help_revlogin .
    2. Script out jobs e servidores vinculados do sql 2000 server.
    3. pare os servidores da web se conectando ao servidor 2000. Certifique-se de que nenhum aplicativo esteja se conectando ao servidor 2000.
    4. faça backup de seus bancos de dados e restaure no servidor sql 2008 R2 de destino. (nota: não desconecte/anexe, pois as coisas podem dar errado e você acabará com o banco de dados desanexado e sem backups!)
    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 logons.
    6. Sincronize usuários órfãos (se houver) e recrie trabalhos de agente 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 restauradosDBCC 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 usandosp_recompile 'procedureName'
    13. Atualize suas visualizaçõesSP_REFRESHVIEW view_name
    14. certifique-se de alterar a opção de banco de dados: página de verificação para CHECKSUM.
    15. Altere o modelo de recuperação (se diferente do sql 2000) para FULL. Se você mudar para o modelo de recuperação COMPLETO, CERTIFIQUE-SE de fazer backups do log de transações com frequência. Isso irá ajudá-lo a recuperar point-in-time, bem como não inchar seu T-Log.
    16. No SQL Server 2005 e superior, o Database Mail foi introduzido. Então você tem que 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 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é:

    • ative a Inicialização Instantânea de Arquivos no novo servidor.
    • Tenha 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 a memória máxima fora do padrão.
    • Ajuste adequadamente as configurações de MAXDOP. Consulte https://dba.stackexchange.com/a/36578/8783 para obter mais detalhes.
    • O melhor é instalar o sp_Blitz de 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 de kendalvandyke - 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 sistemas operacionais Windows do consumidor do Windows 2000 e Windows XP através do Windows Server 2012 e Windows 8. Também útil para atualizações de planejamento - veja quais recursos ocultos estão em uso em uma instância.
    • Habilite Otimizar para cargas de trabalho ad-hoc e opções de compactação de backup padrão.

    Vamos tirar suas dúvidas...

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

    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.

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

    CHECKSUMé novo no SQL Server 2005 e superior. Eu abordei isso 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 de log de transações frequentes permitirá que você restaure point-in-time e ali, reduzindo a quantidade de perda de dados.

    fazer com que esse banco de dados seja exatamente como foi criado no SQL Server 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.

    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 100junto com as etapas acima.

    Eu só quero saber como converter correta e completamente o banco de dados SQL Server 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.

    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:

    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.

    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.

    Sobre o modelo de soma de verificação e recuperação completa: não estava disponível/habilitado no SQL Server 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.

    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:

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

    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.

    Estou me preparando para migrar este banco de dados para o SQL Server 2012 - então primeiro era de 2000 a 2008 R2, agora será de 2008 R2 a 2012 (era impossível fazer isso diretamente por falta de suporte de 2000 bancos de dados em SQL Servidor 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?

    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.

    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?

    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 ):

    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 de 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, por sinal, "desfragmentará" meu banco de dados? Se não, como desfragmentar/otimizá-lo manualmente?

    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:

    • SQL Server Index and Statistics Maintenance - para desfragmentar seus índices
    • Backup do SQL Server -- para cuidar de seus backups
    • Verificação de integridade do SQL Server - para verificar a consistência do banco de dados de seus bancos de dados

    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 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

    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?

    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 PowerShellStart-SqlMigration

    insira a descrição da imagem aqui

    • 37

relate perguntas

  • plano de manutenção executado pelo agente

  • Como determinar o nome de um processo que causou o disparo de um gatilho

  • Erro ao mover SQL Server 2000 para SQL Server 2005 Erro NOLOCK

  • SQL Server 2000: listar e desativar todos os gatilhos

  • Randomizando o conteúdo da tabela e armazenando-o de volta na tabela

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Conceder acesso a todas as tabelas para um usuário

    • 5 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve