Dicas – Compartilhando a experiência de migrar um banco de dados local para SQL Azure

Boa noite a todos !

Trabalhei recentemente em um parceiro para migrar seu banco de dados local para Windows Azure, durante este período acabei colhendo estas dicas direto do campo . As dicas foram colhidas a partir dos seguintes inputs:

Dica 1 - "SELECT INTO"

Problema

A instrução "SELECT INTO", amplamente usada em muitas implementações de Stored Procedures, não funciona no SQL Azure. Principalmente, falando em termos de transferir para alguma tabela temporária.

Sugestão de correção

Modifique a instrução para algo:

  • Criar uma tabela temporária antes (CREATE)
  • Usar a instrução "INSERT INTO <Tabela> SELECT"

Exemplo de correção

Antes:

    1: CREATE PROC dbo.Exemplo
    2: AS
    3:     SELECT INTO #temptable 
    4:         FROM dbo.Musicas
    5:     GO

Depois

    1: CREATE PROC dbo.Exemplo
    2: AS
    3:     CREATE TABLE #temp (id int,nome nvarchar(4000))
    4:  
    5:     INSERT INTO #temp 
    6:         SELECT Id, Nome FROM dbo.Musicas    
    7:  
    8:     GO

Dica 2 - Problema do multi-part names e o FQDN.

Problema

O uso de FQDN (servidor.instancia.dono.objeto) no SQL Azure não é suportado. Por isto, quando executa o SQL Migration Wizard em cláusula "EXEC" aparece a mensagem “multi-part names”.

Sugestão de correção

Modifique a instrução para algo:

  • Não usar o EXEC
  • Tomar o cuidado para não incluir FQDN no nome dos objetos

Dica 3 - Tabelas sem "Clustered Index"

Problema

Todas as tabelas dentro do SQL Azure precisam ter um clustered Index. Em caso de alguma tabela não ter um Clustered Index, não será possível tê-la dentro do SQL Azure

Sugestão de correção

Você tem duas ações possíveis:

  1. Altere o script do banco de dados para criar seus Clustered Index
  2. Ou, deixe o SQL Azure Migration Wizard converta o índice primário como Clustered Index

Dica 4 - Evitando o uso do "NOT FOR REPLICATION"

Problema

A instrução "NOT FOR REPLICATION" é utilizado em situações de replicação de base de dados. Algo impensável na versão atual do SQL Azure

Sugestão de correção

Remova a instrução "NOT FOR REPLICATION" do script do banco de dados

Dica 5 (A mais fatal) - "Missing objects"

Problema

Muitos bancos de dados acabam sofrendo modificações ao longo da sua existência, e algumas destas modificações acabam não sendo devidamente feitas com planejamento. O resultado é que começa a surgir tabelas órfãs, ou stored procedures que ficaram obsoletas, mas não foram removidas do script do banco de dados. A existência de “missing objects” acaba gerando um “abort” no SQL Migration Wizard.

A causa é que o SQL Migration Wizard não tem um tratamento de exceção quando verifica os objetos (table, view, stored procedures e triggers) através do "SQL Server Management Objects".

Sugestão de correção

Tenho duas sugestões de correções:

Sugestão 1

Antes de executar o SQL Migration Wizard tenha conciência de que todos os objetos (table, views, stored procedures e outros) são válidos e existem no banco de dados local.

Sugestão 2

Modifique o código do SQL Azure Migration Wizard para tratar as exceções.

abs e T+

Condé

versão 1.0