Migrar do SQL Server 2000 para 2012 sem uma instância de 2005 ou 2008

11

Encontrei três bancos de dados antigos no SQL Server 2000, que preciso mudar para 2012. Acredito que a abordagem padrão é restaurar em uma instância de 2005 ou 2008, atualizar, reexportar e finalmente restaurar em 2012.

Tudo bem, exceto que não temos instâncias de 2005 ou 2008 disponíveis.

Existem soluções alternativas ou outros métodos que podem valer a pena tentar?

Para obter informações, os bancos de dados contêm apenas 15 a 20 tabelas e algumas visualizações, parecem muito simples e os backups têm apenas 100-200 MB de tamanho.

Lunatik
fonte
1
Como seu banco de dados é pequeno, você pode criar um script para todo o banco de dados - apenas esquema (sem dados - usando PowerShell ou SSMS) e, em seguida, usar bcp OUT e inserção em massa . Uma vez que você é feito com a migração dos dados, então você pode seguir as melhores práticas descritas nesta resposta
Kin Shah
1
é perfeitamente legal e está coberto no licenciamento do sql para instalar uma instância intermediária como uma "ponte" para atualização. nenhum usuário deve se conectar a ele. ...
Rostol

Respostas:

21

Não, não há solução alternativa para atualizar um banco de dados diretamente de 2000 para 2012.

Como você não possui muitos dados, você pode fazer todo o tipo de coisas para mover os dados (mas não o banco de dados como um todo), incluindo:

  • Assistente de importação / exportação
  • SSIS
  • BCP
  • Consultas manuais usando um servidor vinculado de 2012 ou um aplicativo

No entanto, isso não trará necessariamente outras coisas, como usuários, permissões, funções, etc. E nem tudo criará seus objetos na ordem de dependência correta. Portanto, eles são mais propensos a trabalhar e a erros. Na minha experiência, valeria a pena colocar temporariamente uma instância intermediária e depois executar duas operações de backup + restauração - que serão mais fáceis, rápidas e menos propensas a erros do que qualquer um dos métodos acima.

Se seus bancos de dados forem menores que 10 GB, você poderá instalar uma cópia do Express (gratuita) em alguns minutos e usá-la. Você pode fazer o download do 2008 R2 Express aqui . Eu não acho que existam recursos do Enterprise em 2000 em torno da estrutura do banco de dados etc. que bloqueariam essa atualização (uma preocupação maior para versões mais modernas).

Se o seu banco de dados for muito grande para o Express, você poderá encontrar a Developer Edition por US $ 49 ou mais (ou até mais barato - encontrei 2005 no eBay por US $ 37 ) ou, se você tiver uma assinatura do MSDN, poderá obter qualquer SKU a partir daí.

Ou você pode se safar do uso de uma Evaluation Edition, que ainda é incrivelmente oferecida para download em versões mais antigas (por exemplo, eu encontrei 2008 aqui ), no entanto, estou em um telefone para não poder confirmar que o download dessa versão ainda funciona. .

Aaron Bertrand
fonte
Obrigado. Como a velocidade da Internet aqui é baixa, eu estava tentando evitar downloads, mas achei os binários de instalação de 2005, então acho que esse será o método mais rápido.
Lunatik
Não, a única realmente útil é 2008 caso contrário, você também vai precisar de 2010 a partir de 2005
Rostol
Você tem certeza @Rostol? sqlskills.com/blogs/paul/…
Adam Nofsinger 14/02
@AdamNofsinger, eu diria 100% de certeza, fiz isso várias vezes (temos um SQL 2000 antigo usado por um sistema antigo) e criamos um vm 2008 para restaurar os dados primeiro e depois fazer backup e restaurar o SQL 2016 ... Mas se Paul Randal disser o contrário ... mas lembre-se de que o método direto funciona a partir de 2005 +. não para 2000 e 2003 diretamente.
Rostol
6

Afirmar que não há solução alternativa parece um pouco prematuro.

Você diz que seu banco de dados contém apenas algumas tabelas e visualizações. Por que não exportar as tabelas e visualizar o esquema como SQL criar instruções e executá-las no banco de dados de destino? Você também pode exportar os dados reais para algo como o formato CSV e importá-los para o banco de dados de destino, ou talvez até escrever algo em C # / C ++ / etc para exportar / importar os dados reais.

Você não precisaria gastar um centavo em novas instâncias do SQL Server que você não precisa.

Nicholas Hill
fonte
3
E inclua todos os outros objetos, procedimentos armazenados, gatilhos, funções etc., é claro. Da mesma forma, existe o utilitário BCP para copiar dados de e para um banco de dados.
RLF
1
Obrigado. Talvez esse seja o tipo de coisa que eu esperava, mas a disputa de banco de dados não é o meu trabalho diário e não tenho certeza se existem outras dependências ou configurações (permissões de usuário etc.) que não seriam copiadas se eu acabou de exportar as tabelas etc.
Lunatik
4
É justo, atualizei minha resposta. Ainda acho que uma solução alternativa é muito mais trabalhosa do que apenas colocar temporariamente uma instância e executar duas operações de backup + restauração confiáveis ​​e não propensas a erros. (Além disso, este não parece ser sobre o dinheiro , já que o OP já tem 2005 binários e uma base de dados que pequeno deve ser capaz de ser migrados usando SQL Express de qualquer maneira.)
Aaron Bertrand
3

Não, você não pode migrá-lo diretamente de 2000 para 2012.

O que você pode fazer é instalar uma instância temporária de 2005 OU 2008 ou 2008R2, restaurar o banco de dados 2000 aqui. Depois de concluído, agora você pode atualizar da instância instalada, fazendo o backup do banco de dados dessa instância e restaurando-o no sql server 2012.

Você precisará fazer a migração em duas etapas:

  • Etapa 1: faça uma primeira migração do SQL 2000 para o SQL 2008, por exemplo. Você precisa ser o SQL 2000 SP4 e siga esta etapa: Migração do SQL Server 2000 para o SQL Server 2008

  • Etapa 2: faça uma segunda migração do SQL Server 2008 para 2012.

KASQLDBA
fonte
0

Você diz que "encontrou três bancos de dados antigos no SQL Server 2000", o que me leva a acreditar que você só precisa dos dados. Eu acho que se eles estivessem sendo administrados com um objetivo, você saberia. Se for esse o caso, ignore todas as perguntas dos usuários, segurança etc.

Assistente de Importação / Exportação de todas as tabelas Script dos procedimentos e visualizações armazenados Verifique os planos de manutenção e os trabalhos do agente simplesmente para documentar os processos que você deseja examinar posteriormente.

Mitch Stein
fonte
0

Você não pode migrar diretamente do SQL Server 2000 para o SQL Server 2012 e, se tentar fazer isso, receberá o seguinte número de erro 3169, relacionado a problemas de compatibilidade.

A migração para o SQL Server 2012 pode ser feita a partir de uma das seguintes versões (versões mínimas): SQL Server 2005 SP4 ou SQL Server 2008 SP2 ou SQL Server 2008 R2 SP1.

Portanto, a primeira etapa para migrar do SQL Server 2000 para uma dessas versões, encontrei um dos consultores de atualização para o SQL Server 2008 no link a seguir . Para garantir que tudo funcione sem problemas antes de iniciar o processo de restauração, você precisa executar o aplicativo. Em seguida, "Inicie o Assistente de Análise do Upgrade Advisor" e siga as etapas do assistente.

Depois de obter o relatório, você precisa restaurar o banco de dados no SQL Server 2005 SP4 ou SQL Server 2008 SP2 ou SQL Server 2008 R2 SP1 e executar o nível de compatibilidade nele (você pode encontrá-lo na opção de banco de dados). Para logons do SQL Server, siga as instruções no link a seguir .

Quando isso estiver concluído, você precisará migrar para o SQL Server 2012, repetindo as mesmas etapas do servidor para o qual você fez a primeira migração.

Ahmad Abuhasna
fonte
0

Primeiro, concordo que você não deve migrar de 2000 para 2012 diretamente. Eu acho que esse processo foi bem coberto. Eu queria sugerir que você descubra com certeza se alguém está usando os bancos de dados e para que eles estão usando. Pode ser que eles não estejam sendo usados. Isso acontece e, se for esse o caso, você não terá preocupações. Pode ser que a adição de 2 ou 3 tabelas e os dados (para 2000 use o bcp, se você deseja extrair os dados de uma tabela individual de forma simples e confiável) a um banco de dados existente de 2012, atenda às necessidades dos usuários. Se você fizer isso, crie as novas tabelas em um banco de dados de 2012 e bcp os dados que você precisa csv. Se você precisar migrar mais de uma ou duas tabelas, a maneira mais simples, segura e melhor é fazer a migração em duas etapas. Don '

dkh63493
fonte
Você deve saber que o script de esquema em 2000 não era 100% exato. Lembro-me de sempre ter que editar o script.
Dkh63493