Migrando o banco de dados local para o SQL Azure

Description

Neste artigo você vai migrar o banco de dados da aplicação TailspinSpyworks para SQL Azure e configurar a aplicação para acessar o novo banco de dados.

Este é o segundo artigo que cobre o conteúdo de migração de um web site para Windows Azure, estes artigos fazem parte da academia do Windows Azure disponível no MVA - Microsoft Virtual Academia.

Passo 1 – Fazer o "Attach" do banco Commerce no SQL Server Express

Neste passo você fará o "Attach" do banco de dados Commerce usado no projeto, dentro do SQL Server Express instalado na máquina local.

  1. Execute o Microsoft SQL Server Management Studio como administrador de Start | All Programs | Microsoft SQL Server Management Studio clique com o botão direito do mouse no atalho para o Microsoft SQL Server Management Studio e escolha Run as administrator.

 Generic Episode Image

  1. Se a janela User Account Control aparecer, clique Yes.
  1. Conecte no SQL Server Express instalado na máquina local.

 Generic Episode Image

  1. Faça o Attach (Anexar) do banco de dados Commerce clicando com o botão direito do mouse e Databases (Banco de dados) | Attach (Anexar). Na janela Attach Databases (Anexar banco de dados), clique no botão Add... (Adicionar...) e localize o arquivo do banco de dados Commerce.mdf (o arquivo está na pasta App_Data do projeto), em seguida clique em  OK.

 Generic Episode Image

Generic Episode Image


OBS: Altere o valor da coluna Attach as (Anexar Como) em destaque, esse valor será utilizado como o nome do seu banco de dados. Utilize o nome Commerce.

 Passo 2 – Preparar sua conta no SQL Azure.

Neste passo você vai preparar a sua conta no SQL Azure.

  1. Acesse pelo Internet Explorer o portal do Windows Azure Platform https://windows.azure.com.
  1. Faça login com sua conta do Windows Live.

 Generic Episode Image

  1. Na página web inicial do Windows Platform Azure, clique em Novo Servidor de Banco de Dados (ou New Database Server).

 Generic Episode Image

  1. Para criar o servidor,      selecione a sua subscrição no painel da esquerda.  Clique em Criar (Create) na faixa de opções  do Server.

 Generic Episode Image

  1. Secione a região da lista Region (drop down) e clique em Next. A localização determina em qual datacenter o banco de dados vai ser criado.

 Generic Episode Image

  1. Informe um nome e senha para a conta de administração e clique em Próximo.

Generic Episode Image

Nota: Uma conta de administração é a conta master usada para gerenciar o novo servidor. Você deve evitar o uso desta conta nas strings de conexão onde o usuário e senha são expostos. A política de senha requer que a senha siga certas regras.

 Generic Episode Image

  1. Clique em Concluir para criar o novo servidor.  Faremos a inclusão das regras de firewall em um segundo momento.

 Generic Episode Image

 

  1. Por final, as informações do  novo servidor são mostradas, incluindo o Nome do servidor Totalmente      qualificado (Fully Qualified Server Name).

 Generic Episode Image

Nota: O nome do servidor totalmente qualificado (fully qualified domain name) do servido tem o seguinte formato:

  •     <NomeDoServidor>.database.windows.net
  • onde <NomeDoServidor> identifica o servidor, exemplo: a9ixtp7pux.database.windows.net.
  1. Expanda o nó da subscrição  dentro do painel da esquerda e clique no nome do servidor que você criou.  A página Informações do Servidor (Server Information) permite a você fazer a administração básica do servidor de banco de dados.

 Generic Episode Image

  1. As regras de firewall (Firewall Rules) permite você especificar uma lista de endereços IP que podem acessar seu o serviço SQL Azure. O firewall irá negar TODAS as conexões por padrão, então configure a lista para permitir que sua aplicação acesse o servidor.

 Generic Episode Image

  1. Clique em adicionar, para  incluir uma nova regra de firewall

 Generic Episode Image

Em seguida preencha as informação da pop-up de inclusão de regra, perceba que a interface já apresenta o seu endereço IP para facilitar a inclusão da regra. Quando preencher todos os campos, o botão de OK vai ficar habilitado para o clique

 Generic Episode Image

Agora você já tem um servidor de banco de dados criado e pronto para os próximos passos deste laboratório. Este banco de dados pode ser acessado de qualquer lugar do mundo, desde que possua a regra de firewall definida que permita o acesso.

Passo 3 – Criar o banco de dados Commerce no SQL Azure.

Neste passo você vai criar o banco de dados Commerce dentro do SQL Azure.

  1. Execute o Microsoft SQL Server Management Studio como administrador. Start | All Programs | Microsoft SQL Server Management Studio clique com o botão direito do mouse no atalho para do Microsoft SQL Server Management Studio e escolher Run as administrator.

 Generic Episode Image

  1. Se a janela User Account Control aparecer, clique Yes.
  2. Na janela Connectar ao Servidor,  informe o Nome DNS Totalmente qualificado (fully qualified domain name) do servidor, usuário e senha. Em seguida clique em conectar.

 Generic Episode Image

  1. Agora você deve estar visualizando a estrutura do seu banco de dados (SQL Azure) no Object Explorer . Clique com o botão direito do mouse em Databases | New Database.

 Generic Episode Image

  1. Um template de script será  apresentado para criação de banco de dados. Troque o texto <Database_Name, sysname,  Database_Name> para Commerce, em seguida clique em Execute.

 Generic Episode Image

  1. Verifique se o banco de dados Commerce foi criado clicando em Refresh, agora você está pronto para migrar o seu banco de dados do SQL Server Express local para o SQL Azure.

Passo 4 – Migrar o banco de dados Commerce do SQL Express local para o SQL Azure.

Neste passo você usará o SQL Azure Migration Wizard que está disponível no CodePlex, acesse a URL http://sqlazuremw.codeplex.com/ e faça download da ferramenta. Com ela migraremos a estrutura e os dados de  Commerce do SQL Express local para o SQL Azure.

  1. Execute o SQL Azure Migration Wizard (executando o arquivo SQLAzureMW.exe) e selecione a opção Analyze / Migrate | SQL Database em seguida clique botão Next.

Generic Episode Image

  1. Informe os dados para conectar ao banco Commerce do SQL Server Express local e clique em Connect.

 Generic Episode Image

  1. Na próxima janela exibida selecione o banco de dados [Commerce]. Clique em Next.

Generic Episode Image

  1. Selecione todos os objetos do banco de dados (All database objects) e clique em Next

Generic Episode Image

  1. Um resumo é apresentado na sequencia. Clique em Next.

 Generic Episode Image

  1. Clique em Yes no pop-up, para responder que está pronto para gerar o script.

 Generic Episode Image

 

  1. Assim que o SQLAzureMW terminar o processo é apresentado um log da execução. Verifique se ocorreu algum erro no processo. Em seguida clique em Next.

Generic Episode Image

  1. Informe os dados para conectar ao banco Commerce do SQL Azure e clique em Connect.

 Generic Episode Image

  1. Em seguida, selecione o banco de dados Commerce e clique em Next.

 Generic Episode Image

  1. Clique em Yes no pop-up, para responder que está pronto para executar o script.

 Generic Episode Image

  1. Assim que o SQLAzureMW terminar o processo é apresentado um log do processo executado. Verifique se ocorreu algum erro no processo. Em seguida clique em Exit

Generic Episode Image

  1. Seu banco de dados já foi migrado para o SQL Azure. Agora execute o Microsoft SQL Server Management Studio e verifique se o banco de dados Commerce foi criado no SQL Azure conforme a imagem abaixo.

 Generic Episode Image

Passo 5 – Configurar a aplicação para acessar o banco de dados Commerce no SQL Azure

Neste passo você vai alterarar o arquivo de configuração do projeto Web.config para que a string de conexão do banco acesse o banco de dados Commerce no SQL Azure e não mais do SQL Server Express local. Para tanto, execute os passos a seguir.

  1. Execute o Visual Studio como administrador de Start | All Programs | Microsoft Visual Studio e clique com o botão da direita no atalho do Microsoft Visual Studio 2010 e escolha Run as administrator (para      facilitar o dia a dia, eu já deixei configurado no próprio atalho do Visual Studio para executar como administrador).
  2. Se a janela User Account Control aparecer, clique Yes.
  1. Na opção File do menu, escolha Open em seguida Project/Solution
  1. Na janela Open Project, procure o arquivo TailspinSpyworks.sln para abrir a solução.
  1. Pelo Solution Explorer, abra o arquivo Web.config.
  1. Procure a sessão <connectionStrings> e altere a string de conexão como o exemplo abaixo. Não esqueça de alterar o nome do servidor, usuário e senha.

 

    <add name="CommerceEntities" connectionString="metadata=res://*/Data_Access.EDM_Commerce.csdl|res://*/Data_Access.EDM_Commerce.ssdl|res://*/Data_Access.EDM_Commerce.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=[seu servidor].database.windows.net;Initial Catalog=Commerce;User ID=[usuario];Password=[senha];MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />

Para exercício repita o as etapas para transferir o banco AspnetDB para o banco Commerce do SQL Azure. Como vamos utilizar o banco de dados Commerce como destino não é preciso criar um novo banco de dados no SQL Azure. 

Nota: Após migrar o banco de dados AspnetDB para o banco de dados Commerce, não há necessidade de possuirmos duas strings de conexão apontando para o mesmo banco de dados. Sugiro utilizar somente a CommerceEntities e alterar tudo que for ApplicationServices nos providers por CommerceEntities.

Após realizar a migração de ambos os bancos de dados para o SQL Azure, o banco Commerce ficará assim.

Generic Episode Image

Execute a aplicação pelo Visual Studio para testar se está acessando o banco de dados Commerce do SQL Azure.

Quantos passos não é mesmo, mas o procedimento é simples. Se tiverem algum problema para realizar a migração do banco de dados AspnetDB, inclua um comentário com sua dúvida que responderei na medida do possível.

Faça download do projeto alterado aqui.

Abraço,

Vinícius.

 

The Discussion

  • Flavio Nicastro

    Vinicius, como faço para fazer back-up e restore de databases no sql azure?
    Como "subo" um back-up para a nuvem?


    Já tive alguns problemas de migração de bases, que perdem identitys, relacionamentos etc... Com esta ferramenta de migração, os identitys e relacionamentos são preservados?

  • Eliezer​Perlmutter

    Vinicius,

    Uma pequena errata:

    No Passo 2 "Preparar sua conta no SQL Azure", item 3 "Na página web inicial do Windows Platform Azure, clique em Novo Servidor de Banco de Dados (ou New Database Server).", você destacou o ícone de "Novo Serviço Hospedado", acredito que o correto seria o ícone de " Novo Servidor de Banco de Dados".

    Ótimo tutorial.

    Abraços!

  • RLSa

    Muito esclarecedor. Tae um recurso que visivelmente precisa de melhorias. É estranho duas ferramentas top precisarem de outro programa para fazer uma migração que deveria ser opção básica entre as duas.

    Fazer upload do mdf como blob e depois anexar no SQL parece uma solução bem mais "Azure".

  • Vinicius_​Souza

    @EliezerPerlmutter: Muito obrigado Eliezer!

  • Leo Wagner de Souza

    A integração entre o SQL Management Studio e o Azure ainda deixa muito a desejar.
    Não é possível alterar a estrutura da tabela diretamente, nem gerar scripts do banco que está na nuvem.
    Backup também não consigo fazer.
    Mas por outro lado já tenho 6 bancos na nuvem, a performance e estabilidade não tem igual.
    Vamos esperar as próximas ferramentas e torcer.

Comments closed

Comments have been closed since this content was published more than 30 days ago, but if you'd like to continue the conversation, please create a new thread in our Forums, or Contact Us and let us know.