Migração de Bases de Dados SQL com o SqlPackage e Data-tier Application

Realizar a migração de estruturas e dados geralmente ocasionam dor de cabeça e requerem uma atenção especial dos profissionais que a fazem.

Existem uma série de passos e cuidados que devem ser tomados para realizar tal migração, tendo em vista que esta pode acontecer em ambientes e/ou plataformas diferentes.

Neste artigo irei abordar especificadamente a migração de bancos de dados do SQL Server entre servidores ou com a nuvem (Microsoft Azure) utilizando o SqlPackage ou pelo modo “Design” do SQL Server Management Studio e o Microsoft Azure.

O SqlPackage é uma linha de comando útil para automatizar algumas tarefas de desenvolvimento do banco de dados, tais como:

    • Extract: Cria um snapshot do banco de dados em um arquivo (.dacpac);
    • Export: Exporta a estrutura e os dados de um banco de dados SQL Server ou Azure SQL em um arquivo (.bacpac);
    • Import: Importa a estrutura e os dados para um banco de dados SQL Server ou Azure SQL através de um arquivo (.bacpac);
    • Publish: Atualiza incrementalmente a estrutura de um banco já existente para coincidir com o esquema de um arquivo de origem (.dacpac). Caso o banco de dados não exista, o mesmo será criado;
    • DeployReport: Cria um relatório XML das alterações que seriam feitas pela ação de “Publish”;
    • DriftReport: Cria um relatório XML das alterações realizadas em um banco desde a última modificação;
    • Script: Cria um script T-SQL que atualiza o schema do banco de dados para coincidir com o schema do banco de origem.

Aqui vamos nos concentrar nas funcionalidades de Export e Import e alguns dos paramêtros que podem ser usados com eles.

Para visualizar o overview completo do SqlPackage no MSDN, clique aqui.

SINTAXE DA LINHA DE COMANDO

SqlPackage {parâmetros} {Propriedades} {} SQLCMDVariables

OBS: O Local do arquivo SqlPackage.exe pode variar conforme a versão do SQL Server, neste caso estou utilizando o 2014, portanto o caminho é: “C:\Program Files (x86)\Microsoft SQL Server\120\DAC\bin”

EXPORTANDO DE UMA BASE DE DADOS LOCAL PARA UM ARQUIVO .BACPAC

“C:\Program Files (x86)\Microsoft SQL Server\120\DAC\bin\sqlpackage.exe” /a:Export /ssn:ALS-NB /sdn:Genesis /tf:C:\temp\Genesis.bacpac

a: Action – Ação do SqlPackage (Export, Import, Publish, etc)
ssn: Source Server Name – Nome do servidor de origem.
sdn: Source Database Name – Nome da base de dados de origem.
tf: Target File – Caminho onde o arquivo BACPAC será gravado.
su: Source User – Usuário com acesso ao banco
sp: Source Password – Senha de acesso ao banco

Migracao_SQL_01

IMPORTANDO DE UM ARQUIVO .BACPAC PARA OUTRO SERVIDOR (Nesse caso, para o Azure SQL)

“C:\Program Files (x86)\Microsoft SQL Server\120\DAC\bin\sqlpackage.exe” /a:Import /sf:C:\temp\Genesis.bacpac /tsn:servidor.database.windows.net /tdn:Genesis /tu:user@servidor /tp:senha

a: Action – Ação do SqlPackage (Export, Import, Publish, etc)
sf: Source File – Caminho onde o arquivo BACPAC foi gravado.
tsn: Target Server Name – Nome do servidor de destino.
tdn: Target Database Name – Nome da base de dados de destino.
tu: Target User – Usuário com acesso ao banco
tp: Target Password – Senha de acesso ao banco

REALIZANDO A MIGRAÇÃO PELO SQL SERVER MANAGEMENT STUDIO

O processo de migração pode ser feito manualmente pelo Management Studio. Ele torna-se mais fácil, porém você não tem a possibilidade de automatizá-lo como pela linha de comando com o SqlPackage.

Exportando de uma base de dados local para um arquivo local BACPAC ou Storage no Azure

Conecte-se ao servidor, clique com o botão direito na base de dados que deseja exportar em clique em “Tasks > Export Data-Tier Application”

É possível salvar o arquivo na máquina local ou diretamente em uma conta de armazenamento que você tenha no Azure.
Na aba “Advanced” é possível especificar as tabelas a serem exportadas. Por padrão todas estão marcadas.

Migracao_SQL_03

Clique em finalizar e aguarde o processamento até a conclusão.

Migracao_SQL_04

IMPORTANDO DE UM ARQUIVO LOCAL .BACPAC OU STORAGE NO AZURE PARA SUA BASE LOCAL

Conecte-se ao servidor, clique com o botão direito em “Databases” e em seguida em “Import Data-Tier Application”

Migracao_SQL_05

É possível importar de um arquivo salvo na máquina local ou diretamente em uma conta de armazenamento que você tenha no Azure.
Na tela seguinte é necessário definir o nome da Base de dados a ser criada e os aquivos de DATA e LOG que serão criados.

Migracao_SQL_06

Clique em finalizar e aguarde o processamento até a conclusão.

IMPORTANDO UM ARQUIVO .BACPAC DIRETAMENTE NO PORTAL DO AZURE

Entre em sua conta e no Portal do Azure vá para a área de Servidores SQL. Selecione o seu servidor (Previamente criado) e clique em Importar Banco de dados.

Migracao_SQL_07

Ao Clicar, você deve preencher mais algumas informações como o nome do Banco de dados, agrupamento, camada de preços e selecionar sua conta de Armazenamento, onde o seu arquivo .BACPAC foi previamente enviado no momento da exportação da sua base.

Migracao_SQL_08

Após definir esses pontos é só clicar em CREATE e está feito!

Quaisquer dúvidas ou esclarecimentos, utilize os comentários abaixo.

Valeu!

Referências

https://msdn.microsoft.com/en-us/hh550080(v=vs.103).aspx

https://azure.microsoft.com/pt-br/documentation/articles/sql-database-import/

Um comentário sobre “Migração de Bases de Dados SQL com o SqlPackage e Data-tier Application

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *