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:
- Um banco de dados já funcionam dentro do SQL Server
- O uso do SQL Azure Migration Wizard como ferramenta para migração
- Documentação oficial sobre as limitações do SQL Azure
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:
- Altere o script do banco de dados para criar seus Clustered Index
- 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