Skip to main content

Migrando SQL Server para SQL Azure via BacPac

Há duas grandes vantagens de se trabalhar com o SQL Azure diretamente ao invés do SQL Server, uma delas está na simplicidade do gerenciamento, uma vez que você não precisa se preocupar com a infraestrutura onde o serviço é hospedado, ou seja, contingência, escalabilidade, backup e updates são questões que a Microsoft tem que lidar e não você. A outra vantagem está no custo, que pode ser muito menor que no modelo on-premises. Além disso, é uma forma muito mais amigável para empresas que não possuem profissionais de devops ou de infra dando apoio aos desenvolvedores de aplicação. É claro que nem tudo são flores. Há algumas limitações no SQL Azure que você precisa estar ciente principalmente quando está tentando migrar uma base de dados existente. Recomendo ler este [1] artigo para mais informações.

Exportando os dados pelo Management Studio

Há diversas formas de exportar dados ou até sincroniza-los diretamente entre uma instancia de SQL Server e o SQL Azure. Optei pelo bacpac por ser uma maneira bastante prática, além disso podemos exportar o arquivo diretamente para o Storage do Azure para posteriormente importa-lo pelo Portal, ou seja, nem precisaremos do Management Studio para o import.

Para exportar os dados, selecione o banco desejado e navegue para Tasks >> Export Data-Tier Application…

Exporting_Bacpac1

Selecione “Save to Windows Azure”. Clique em “Connect” para inserir os dados da conta. Digite o nome do Storage e a chave de acesso (Primária ou Secundária).

Exporting_Bacpac2

Exporting_Bacpac3

Exporting_Bacpac4
Valide as informações e clique em finalizar para iniciar o procedimento.

Exporting_Bacpac5

Requisito de índice clusterizado

Como comentei no início do artigo, existem algumas limitações com relação ao SQL Azure que devemos nos preocupar e uma delas é a existência de índice clusterizado para cada tabela. Caso você tenha o problema abaixo, precisará criar esse índice antes de continuar.

Exporting_Bacpac6-err

Uma forma simples de resolver é configurar uma chave primária para a sua tabela e automaticamente um clustered index será criado para ela. Caso contrário, utilize o SQL abaixo e customize conforme sua necessidade:

ALTER DATABASE database_name SET OFFLINE;

Resolvido todos os problemas, você deve conseguir exportar o .bacpac com sucesso.

Exporting_Bacpac6

Importando os dados pelo Portal

Agora faça o login no portal do Azure e navegue para New >> Data Services >> SQL Database >> Import.

Exporting_Bacpac7

Clique no ícone da pasta do BACPAC URL e procure o arquivo exportado para o Storage. Verifique se a Assinatura está correta, customize o Tier e Performance Level conforme necessidade e escolha o servidor para onde esta base será importada. Caso você não tenha nenhum servidor SQL Azure ainda, selecione para criar novo e prossiga para a próxima tela do Wizard.

Exporting_Bacpac8

Caso seja seu primeiro servidor, você deverá fornecer um login, senha, escolher a região e selecionar se gostaria de permitir que serviços rodando no Azure estejam automaticamente habilitados para se conectarem a ele (Recomendado, remove necessidade de adicionar os ips individualmente na lista de exceções). Além disso, há algumas vantagens em habilitar o engine V12 do SQL Azure. Recomendo a leitura deste [2] artigo para mais informações.

Caso contrário, apenas forneça o login e senha para autenticação e clique aceitar para iniciar o processo de importação.

Repare que a barra de status inferior lhe fornece informações do andamento durante todo o procedimento. Agora basta aguardar que seja processado até 100% para começar a utilizar.

Exporting_Bacpac9

Pronto! Sem nenhuma dor, você agora possui um banco de dados escalável, redundante e sem necessidade de gerenciamento de infraestrutura, patches e afins. Talvez sejam necessárias pequenas modificações na string de conexão da sua aplicação, mas até isso o Azure facilita para você. Navegue para o dashboard do banco de dados que acabou de importar e selecione “Show Connection Strings” do Quick Glance. Você terá as strings de conexão para diferentes plataformas. Por exemplo, para ADO.Net:

 

Server=tcp:xxxxxxxxx.database.windows.net,1433;Database=xxxxxxxxx;UserID=xxxxx@xxxxxxxxx;Password={your_password_here};Trusted_Connection=False;Encrypt=True;Connection Timeout=30;

Referências

[1] Noções básicas sobre o Banco de Dados SQL do Azure e SQL Server em máquinas virtuais do Azure. http://azure.microsoft.com/pt-br/documentation/articles/data-management-azure-sql-database-and-sql-server-iaas

[2] What’s new in SQL Database V12. http://azure.microsoft.com/pt-br/documentation/articles/sql-database-v12-whats-new

Leave a Reply

Your email address will not be published. Required fields are marked *

WordPress Backup