Como copio o banco de dados do SQL Azure para o meu servidor de desenvolvimento local?

164

Alguém sabe como posso copiar um banco de dados do SQL Azure para minha máquina de desenvolvimento? Gostaria de parar de pagar para ter um banco de dados de desenvolvimento na nuvem, mas é a melhor maneira de obter dados de produção. Copio meu banco de dados de produção para um novo banco de dados de desenvolvimento, mas gostaria de ter o mesmo banco de dados local.

Alguma sugestão?

BZink
fonte
2
Eu uso esse quase sempre! É pequeno, gratuito, atualizado constantemente, não instala arquivos desnecessários, funciona como um encanto, não cria objetos indesejados no banco de dados e faz exatamente o que seu nome diz.
Astaykov #
4
Isso ficou dramaticamente mais fácil. Consulte a resposta do Atom abaixo (fevereiro de 2018) explicando como usar as tarefas => implantar banco de dados ... no SSMS.
Jon Crowell

Respostas:

129

Existem várias maneiras de fazer isso:

  1. Usando o SSIS (SQL Server Integration Services) . Importa apenasdata na sua tabela. As propriedades da coluna, restrições, chaves, índices, procedimentos armazenados, gatilhos, configurações de segurança, usuários, logons etc. não são transferidos. No entanto, é um processo muito simples e pode ser feito simplesmente através do assistente no SQL Server Management Studio.
  2. Usando a combinação de scripts de criação de SSIS e DB . Isso fornecerá dados e todos os metadados ausentes que não são transferidos pelo SSIS. Isso também é muito simples. Primeiro transfira os dados usando o SSIS (consulte as instruções abaixo), crie o script DB Create do banco de dados SQL Azure e reproduza-o novamente no banco de dados local.
  3. Por fim, você pode usar o serviço Importar / Exportar no SQL Azure . Isso transfere dados (com objetos de esquema) para o Armazenamento de Blob do Azure como um BACPAC. Você precisará de uma conta de Armazenamento do Azure e faça isso no portal da web do Azure. É tão simples quanto pressionar um botão "Exportar" no portal da Web do Azure quando você seleciona o banco de dados que deseja exportar. A desvantagem é que é apenas um procedimento manual, não sei como automatizar isso por meio de ferramentas ou scripts - pelo menos a primeira parte que requer um clique na página da web.

O procedimento manual para o método nº 1 (usando SSIS) é o seguinte:

  • No Sql Server Management Studio (SSMS), crie um novo banco de dados vazio na sua instância SQL local.
  • Escolha Importar dados no menu de contexto (clique com o botão direito do mouse no banco de dados -> Tarefas -> Importar dados ...)
  • Digite os parâmetros de conexão para a fonte (SQL Azure). Selecione ".Net Framework Data Provider para SqlServer" como provedor.
  • Escolha o banco de dados local vazio existente como destino.
  • Siga o assistente - você poderá selecionar os dados das tabelas que deseja copiar. Você pode pular qualquer uma das tabelas que não precisa. Por exemplo, se você mantiver os logs do aplicativo no banco de dados, provavelmente não precisará dele no seu backup.

Você pode automatizá-lo criando o pacote SSIS e reexecutando-o sempre que desejar reimportar os dados. Observe que você só pode importar usando o SSIS para um banco de dados limpo; não é possível fazer atualizações incrementais no banco de dados local depois de fazer isso uma vez.

Método # 2 (dados SSID mais objetos de esquema) é muito simples. Primeiro, siga as etapas descritas acima e crie o script DB Creation (clique com o botão direito do mouse no banco de dados no SSMS, escolha Generate Scripts -> Database Create). Em seguida, reproduza esse script no seu banco de dados local.

O método nº 3 é descrito no blog aqui: http://dacguy.wordpress.com/2012/01/24/sql-azure-importexport-service-has-hit-production/ . Há um videoclipe com o processo de transferência do conteúdo do banco de dados para o armazenamento do Blob do Azure como BACPAC. Depois disso, você pode copiar o arquivo localmente e importá-lo para sua instância SQL. O processo de importação do BACPAC para o aplicativo da camada de dados é descrito aqui: http://msdn.microsoft.com/en-us/library/hh710052.aspx .

seva titov
fonte
2
Isso funciona, apenas uma correção. No assistente de Importação / Exportação de Servidor, a fonte de dados é '.Net Framework Data Provider for SqlServer'
BZink
Ótimo! Obrigado pela correção. Lembro-me de que um dos prestadores trabalhava e outros não funcionavam para mim, mas não se lembrava exatamente qual deles.
seva titov 31/03
Falha para mim: 'A não inserção na coluna somente leitura 'id''
dumbledad
3
O truque para mim foi começar a replicar PKs / FKs / restrições no banco de dados vazio e desabilitar temporariamente as restrições ao importar dados. Mais precisamente: 1-Crie o banco de dados de destino vazio manualmente. 2 Clique com o botão direito do mouse em DB de origem> Tarefas> Gerar scripts. 3-Execute o arquivo de script no banco de dados de destino vazio (agora o banco de dados possui PKs / FKs / restrições corretas, mas nenhum dado). 4-Desative todas as restrições ( stackoverflow.com/a/161410 ). 5-Importar dados (clique com o botão direito do mouse em DB de destino> Tarefas> Importar Dados). 6-Reativar restrições. Espero que isto ajude!
Mathieu Frenette
1
@JoSmo, os métodos 1 e 2 não exigem uma conta de armazenamento. No entanto, eu recomendaria ter uma conta de armazenamento no mesmo datacenter que o banco de dados do SQL Azure. O motivo é que você pode usá-lo para backups e restauração de banco de dados. Se você não tiver permissões administrativas para sua assinatura do Azure, encontre alguém em sua organização com direitos suficientes para criar novas contas de armazenamento e fornecer chaves de acesso a ela. Como você já tem acesso ao banco de dados, não há motivo para negar o acesso à conta de armazenamento.
Titov seva
66

Copie os dados do banco de dados do Azure para o banco de dados local: agora você pode usar o SQL Server Management Studio para fazer isso da seguinte maneira:

  • Conecte-se ao banco de dados do SQL Azure.
  • Clique com o botão direito do mouse no banco de dados no Pesquisador de Objetos.
  • Escolha a opção "Tarefas" / "Implantar banco de dados no SQL Azure".
  • Na etapa denominada "Configurações de implantação", conecte o SQL Server local e crie Novo banco de dados.

insira a descrição da imagem aqui

"Próximo" / "Próximo" / "Concluir"

Átomo
fonte
9
Awesome👏🏻 isso não é tão clara no SSMS desde o "banco de dados de implantação para o SQL Azure" é um pouco enganador ...
EeKay
12
De longe, a solução mais fácil combinada com o nome do menu mais enganador. Obrigado por postar isso.
Kevin Giszewski 25/01/19
Isso é mais simples, mas a desvantagem é que você não pode escolher quais tabelas deseja fazer backup e quais não deseja. Na minha empresa, temos uma tabela de anexos que contém Gigabytes de anexos (fotos, etc.). Normalmente, não queremos isso, pois será para sempre a cópia. Não podemos excluir esta tabela usando este método.
Rosdi Kasim
33

Eu só queria adicionar uma versão simplificada da resposta de dumbledad , pois ela é a correta.

  1. Exporte o Banco de Dados SQL do Azure para um arquivo BACPAC no armazenamento de blob.
  2. No interior do SQL Management studio, clique com o botão direito do mouse no banco de dados, clique em "Importar aplicativo da camada de dados".
  3. Você será solicitado a inserir as informações para acessar o arquivo BACPAC no armazenamento de blobs do Azure.
  4. Bata a seguir algumas vezes e ... Feito!
Josh Mouch
fonte
4
Recebo um erro dizendo que o destino não pode ser o sql azure v12?
Zapnologica 24/03
2
Verifique se você possui uma versão do SSMS que importará esse BACPAC: msdn.microsoft.com/en-us/library/mt238290.aspx
Paul Bullivant
Mesmo com esta versão do SSMS eu ainda recebo um erro por causa do destino do SQL Azure db 12.
Preza8
28

No SQL Server 2016 Management Studio, o processo para obter um banco de dados azul no computador local foi simplificado.

Clique com o botão direito do mouse no banco de dados que deseja importar, clique em Tarefas> Exportar aplicativo da camada de dados e exporte seu banco de dados para um arquivo .dacpac local.

Na instância do servidor SQL de destino local, você pode clicar com o botão direito do mouse em Bancos de Dados> Importar Aplicativo da Camada de Dados e , uma vez local, é possível fazer backup e restaurar o banco de dados.

Adam Skinner
fonte
5
É isso. NB. "Exportar camada de dados" inclui dados, "Extrair camada de dados" fornece apenas definições
Colin
20

Eu acho que é muito mais fácil agora.

  1. Iniciar o SQL Management Studio
  2. Clique com o botão direito em "Bancos de dados" e selecione "Importar aplicativo da camada de dados ..."
  3. O assistente o guiará pelo processo de conexão com sua conta do Azure, criando um arquivo BACPAC e criando seu banco de dados.

Além disso, eu uso o Sql Backup e FTP ( https://sqlbackupandftp.com/ ) para fazer backups diários em um servidor FTP seguro. Simplesmente puxo um arquivo BACPAC recente de lá e o importo na mesma caixa de diálogo, o que é mais rápido e fácil de criar um banco de dados local.

Esse cara
fonte
9

Você também pode conferir o SQL Azure Data Sync no Portal de Gerenciamento do Windows Azure. Ele permite recuperar e restaurar um banco de dados inteiro, incluindo esquema e dados entre o SQL Azure e o SQL Server.

Voclare
fonte
1
O SQL Data Sync não deve ser usado como parte da sua estratégia de backup, pois existem várias limitações. Não possui versão, apenas faz backup de dados e de outros objetos. Para obter mais informações, consulte o tópico Perguntas frequentes sobre o SQL Data Sync ( msdn.microsoft.com/en-us/library/windowsazure/jj650016.aspx )
Shaun Luttin
1
O Data Sync é bastante horrível - até hoje (vários anos após este post), existem muitos bugs e pode realmente estragar o seu banco de dados - ele também tem muitas limitações.
William William
5

É bem fácil. Isso funcionou para mim ... em termos de obter um banco de dados SQL do Azure na sua máquina local ...:

  1. Abra o SQL Management Studio e conecte-se ao Azure SQL Server.
  2. Selecione o banco de dados que você gostaria de acessar na sua máquina local e clique com o botão direito do mouse ... selecione "Gerar scripts". Siga as instruções ...

MAS, tenha cuidado, pois se você TAMBÉM deseja os DADOS, bem como os scripts, verifique as Opções avançadas antes de iniciar a geração ... role para baixo até "Tipos de dados para script" e verifique se possui " Esquema e dados "... ou o que for apropriado para você.

Ele fornecerá um bom arquivo de script SQL, que poderá ser executado em sua máquina local e criará o banco de dados, além de preenchê-lo com todos os dados.

Tenha em mente que, no meu caso, não tenho FK ou outras restrições ... além disso, não havia muitos dados.

Eu não recomendo isso como um mecanismo de backup em geral ...

Barry Theunissen
fonte
2
Devo dizer que isso funcionou notavelmente bem sem problemas; chaves estrangeiras recriadas perfeitamente. O script SQL resultante era muito grande para ser aberto no SSMS, ou de fato em muitos editores de texto, mas eu era capaz de usar a linha de comandosqlcmd /S <server> /d <database> -E -i <azure_dump.sql>
analisando
5

Usando msdeploy.exe

Advertência: msdeploy.exefalha ao criar o banco de dados de destino por conta própria, portanto, você deve criá-lo manualmente primeiro.

  1. Copie a cadeia de conexão na página de propriedades do banco de dados. Ajuste-o para que ele contenha uma senha correta. página de propriedades do banco de dados
  2. Obtenha a cadeia de conexão para o banco de dados de destino.
  3. Execute msdeploy.exeassim:

    "c:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -dest:dbDacFx="destination_DB_connection_string",dropDestinationDatabase=true -source:dbDacFx="azure_DB_connection_string",includeData=true -verbose

Usando SqlPackage.exe

  1. Exporte o DB do azure para um pacote bacpac.

    "c:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin\SqlPackage.exe" /a:Export /ssn:"azure_db_server" /sdn:"azure_db_name" /su:"user_name" /sp:"password" /tf:"file.bacpac"
  2. Importe o pacote para um banco de dados local.

    "c:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin\SqlPackage.exe" /a:Import /SourceFile:"file.bacpac" /TargetServerName:".\SQLEXPRESS" /TargetDatabaseName:CopyOfAzureDb
Gebb
fonte
3

No SQL Server Management Studio

Clique com o botão direito do mouse no banco de dados que deseja importar, clique em Tarefas> Exportar aplicativo da camada de dados e exporte seu banco de dados para um arquivo .dacpac local.

Na instância do servidor SQL de destino local, você pode clicar com o botão direito do mouse em Bancos de Dados> Importar Aplicativo da Camada de Dados e, uma vez local, é possível fazer backup e restaurar o banco de dados.

Ali Sufyan
fonte
2

Não foi possível fazer a importação / exportação do SSIS funcionar, pois recebi o erro 'Falha ao inserir na coluna somente leitura "id"'. Nem consegui obter http://sqlazuremw.codeplex.com/ funcionasse, e os links acima para o SQL Azure Data Sync não funcionaram para mim.

Mas eu achei um excelente post sobre arquivos BACPAC: http://dacguy.wordpress.com/2012/01/24/sql-azure-importexport-service-has-hit-production/

No vídeo da postagem, o autor da postagem do blog percorre seis etapas:

  1. Crie ou acesse uma conta de armazenamento no Portal de Gerenciamento do Azure. Você precisará do URL do Blob e da chave de acesso Primário da conta de armazenamento.

  2. A postagem do blog aconselha a criação de um novo contêiner para o arquivo bacpac e sugere o uso do Azure Storage Explorer para isso. (NB, você precisará da URL do Blob e da chave de acesso Primário da conta de armazenamento para adicioná-la ao Azure Storage Explorer.)

  3. No Portal de Gerenciamento do Azure, selecione o banco de dados que você deseja exportar e clique em 'Exportar' na seção Importar e Exportar da faixa de opções.

  4. O diálogo resultante requer seu nome de usuário e senha para o banco de dados, o URL do blob e a chave de acesso. Não se esqueça de incluir o contêiner no URL do blob e incluir um nome de arquivo (por exemplo, https://testazurestorage.blob.core.windows.net/dbbackups/mytable.bacpac ).

  5. Depois de clicar em Concluir, o banco de dados será exportado para o arquivo BACPAC. Isso pode demorar um pouco. Você pode ver um arquivo de zero byte aparecer imediatamente se você fizer check-in no Azure Storage Explorer. Este é o Serviço de Importação / Exportação, verificando se possui acesso de gravação ao armazenamento de blob.

  6. Feito isso, você pode usar o Azure Storage Explorer para baixar o arquivo BACPAC e, em seguida, no SQL Server Management Studio, clique com o botão direito do mouse na pasta do banco de dados do servidor local e escolha Importar Aplicativo de Camada de Dados que iniciará o assistente que lê o arquivo BACPAC para produza a cópia do seu banco de dados do Azure. O assistente também pode se conectar diretamente ao armazenamento de blob para obter o arquivo BACPAC, se você preferir não copiá-lo localmente primeiro.

A última etapa pode estar disponível apenas na edição do SQL Server 2012 do SQL Server Management Studio (é a versão que estou executando). Não tenho os anteriores nesta máquina para verificar. Na postagem do blog, o autor usa a ferramenta de linha de comando DacImportExportCli.exe para a importação que acredito estar disponível em http://sqldacexamples.codeplex.com/releases

dumbledad
fonte
Embora eu não tenha seguido exatamente isso, ele me levou na direção certa. Você pode pular o download do arquivo bacpac e apontar para o armazenamento do Azure Blob diretamente de dentro do SQL Server Management Studio.
Josh Mouch #
2

Com relação ao "Não foi possível fazer a importação / exportação do SSIS funcionar, recebi o erro 'Falha ao inserir na coluna" somente leitura "id"'. Isso pode ser contornado especificando na tela de mapeamento que você deseja permitir que elementos de identidade sejam inseridos.

Depois disso, tudo funcionou bem usando o Assistente de Importação / Exportação do SQL para copiar do Azure para o banco de dados local.

Eu só tinha o Assistente de Importação / Exportação do SQL que acompanha o SQL Server 2008 R2 (funcionou bem) e o Visual Studio 2012 Express para criar um banco de dados local.

rsh
fonte
2

Você pode tentar com a ferramenta "Assistente de migração de banco de dados SQL". Essa ferramenta fornece a opção de importar e exportar dados do azure sql.

Por favor, verifique mais detalhes aqui.

https://sqlazuremw.codeplex.com/

Krishna_K_Systematix
fonte
1

Você pode usar os novos Serviços Móveis do Azure para fazer uma exportação noturna de backup do SQL Azure para um arquivo .bacpac hospedado no Armazenamento do Azure. Esta solução é 100% nuvem, não requer uma ferramenta de terceiros e não requer uma instância local do SQL Server hospedada para baixar / copiar / fazer backup de qualquer coisa.

Existem cerca de 8 etapas diferentes, mas todas são fáceis: http://geekswithblogs.net/BenBarreth/archive/2013/04/15/how-to-create-a-nightly-backup-of-your-sql-azure .aspx

Ben Barreth
fonte
Isso parece realmente promissor! Alguma idéia se isso funcionará com as Federações do Azure?
Tim Lentine
@ Tim desculpe, eu não sei. Fazer isso através dos Serviços Móveis é uma solução alternativa para começar, portanto, não ficaria surpreso se isso não acontecer.
Ben Barreth
1

Eu sempre uso o recurso Importar / Exportar, que parece ser o mais fácil de todos.

Passo 1:

Obtenha o backup da instância do azure da seguinte maneira: Selecione o banco de dados → Clique com o botão direito do mouse em → Tarefas → Exportar aplicativo da camada de dados.

Etapa 2: forneça um nome específico para o arquivo de backup e salve-o no local desejado

Etapa 3: é isso que você fez um backup do banco de dados da instância sql para o seu local. Vamos restaurá-lo para o local. Copie o banco de dados de backup para sua unidade C. Agora abra o PowerShell com direitos de administrador e navegue até a unidade C

Etapa 4: Baixe o script do PowerShell para remover a chave mestraRemoveMasterKey.ps1 ter o script na mesma unidade, neste caso, o seu C.

Etapa 5: execute o script da seguinte maneira:. \ RemoveMasterKey.ps1 -bacpacPath "C: \ identity.bacpac"

É isso, agora você pode restaurá-lo no MSSQL 2017 em seu ambiente local.

Etapa 6: Conecte-se ao seu servidor local e clique em Bancos de Dados → Import-Data-Application-Application

Etapa 7 : dê um nome para o banco de dados restaurar.

Agora você verá tudo em verde!

Leia meu blog com diagramas.

Sajeetharan
fonte
0

O truque para mim era começar a replicar PKs / FKs / restrições no banco de dados vazio e desabilitar temporariamente as restrições ao importar dados (consulte https://stackoverflow.com/a/161410 ).

Mais precisamente:

  1. Crie o banco de dados de destino vazio manualmente;
  2. Clique com o botão direito do mouse em DB de origem> Tarefas> Gerar scripts;
  3. Execute o arquivo de script no banco de dados de destino vazio (agora o banco de dados possui PKs / FKs / restrições corretas, mas não há dados);
  4. Desative todas as restrições;
  5. Importar dados (clique com o botão direito do mouse em DB de destino> Tarefas> Importar Dados);
  6. Reativar restrições.

Espero que isto ajude!

Mathieu Frenette
fonte
0

Agora você pode usar o SQL Server Management Studio para fazer isso.

  • Conecte-se ao banco de dados do SQL Azure.
  • Clique com o botão direito do mouse no banco de dados no Pesquisador de Objetos.
  • Escolha a opção "Tarefas" / "Implantar banco de dados no SQL Azure".
  • Na etapa denominada "Configurações de implantação", selecione sua conexão com o banco de dados local.
  • "Próximo" / "Próximo" / "Concluir" ...
ferhrosa
fonte
Não pude fazer isso porque o botão "Avançar" fica acinzentado até selecionar outro banco de dados do Azure como a conexão de destino.
Colin
0

Se alguém tiver um problema para importar um Bacpac de um banco de dados que usa o Azure SQL Sync , Sandrino Di Mattia desenvolveu um ótimo aplicativo simples para resolver isso.

  1. Exportar um Bacpac do seu DB
  2. Dowload Di Mattia's Binário de
  3. Com este aplicativo de console, repare o Bacpac baixado
  4. Lauch SSMS
  5. Clique com o botão direito em "Bancos de dados" e selecione "Importar aplicativo da camada de dados"
  6. Selecione o Bacpac reparado.
Géza
fonte
0

Se alguém quiser uma opção gratuita e eficaz (e não se importe de fazer isso manualmente) para fazer backup de banco de dados no Local, use a funcionalidade de esquema e comparação de dados incorporada à versão mais recente do Microsoft Visual Studio 2015 Community Edition (Grátis) ou Professional / Premium / Ultimate edição. Ele funciona como um encanto!

Eu tenho uma conta do BizPark no Azure e não há como fazer backup do banco de dados diretamente sem pagar. Eu encontrei esta opção no VS funciona.

Resposta é retirada de https://stackoverflow.com/a/685073/6796187

Crennotech
fonte
0

Olá, estou usando a ferramenta SQLAzureMW para migração e gerenciamento do SQLAzure DB. Muito útil. Ele foi baixado do codeplex, mas atualmente não está disponível, o codeplex será encerrado, a mesma ferramenta de aplicativo agora está disponível no GttHub. Este link abaixo explica como usar essa ferramenta e também está disponível o aplicativo para download.

https://github.com/twright-msft/azure-content/blob/master/articles/sql-database/sql-database-migration-wizard.md

Raja Subbiah
fonte