Como copiar meu banco de dados do SQL Azure para uma instância local do SQL Server?

12

Eu tenho um banco de dados OLTP hospedado em uma instância do SQL Azure. Quero extrair uma cópia do banco de dados da nuvem para poder executar algumas extrações pesadas e consultas no estilo OLAP, sem afetar o banco de dados de origem.

Como puxar uma cópia do banco de dados para uma instância local do SQL Server?

Nick Chammas
fonte

Respostas:

9

Use o Assistente de Migração do SQL Azure :

O Assistente de Migração do SQL Azure (SQLAzureMW) oferece as opções para analisar, gerar scripts e migrar dados (via BCP) de:

  1. SQL Server para SQL Azure
  2. SQL Azure para SQL Server
  3. SQL Azure para SQL Azure
Nick Chammas
fonte
Parece não funcionar com o LocalDB, tenho um erro dizendo que 'A criptografia não é suportada' na etapa quando você seleciona o banco de dados de destino. A ferramenta não é capaz de se conectar à minha instância LocalDB
tobiak777
@ red2nb - Não sei nada sobre o LocalDB, mas talvez como o erro sugira não seja um problema do LocalDB, mas um problema com o banco de dados de destino sendo criptografado.
Nick Chammas
4

Componha um bcpscript que exporte o conteúdo de todas as suas tabelas para arquivos locais.

Comece escrevendo uma consulta que produzirá um bcpcomando para exportar cada tabela no banco de dados de destino para um caminho na máquina de destino:

SELECT 
      'bcp '
    + SCHEMA_NAME(schema_id) + '.' + name
    + ' out '
    + ' D:\local_backup_directory\' + SCHEMA_NAME(schema_id) + '.' + name + '.txt'
    + ' -c '
    + ' -S servername.database.windows.net '
    + ' -d database_name '
    + ' -U username '
    + ' -P password'
FROM sys.tables;

Execute esta consulta usando bcpseu banco de dados SQL Azure no computador para o qual você deseja copiar e salve os resultados em um cmdarquivo. Execute esse cmdarquivo para exportar cada tabela para um arquivo de texto.

C:\> REM ask bcp to save the results of the above query to a file
C:\> bcp "SELECT      'bcp '    + SCHEMA_NAME(schema_id) + '.' + name   + ' out '   + ' D:\backup_directory\' + SCHEMA_NAME(schema_id) + '.' + name + '.txt'    + ' -c '    + ' -S servername.database.windows.net '    + ' -d database_name '  + ' -U username '   + ' -P password' FROM sys.tables;" queryout output_path\bcp_script.cmd -c -S servername.database.windows.net -d database_name -U username -P password

C:\> REM execute the bcp commands saved to file
C:\> output_path\bcp_script.cmd

Essa é uma abordagem rápida e suja e não é adequada para bancos de dados grandes ou esquemas complexos.

Nick Chammas
fonte
2

Percebi que há uma nova ferramenta nesta lista, o Azure SQL Database Backup da Idera . É gratuito e eles geralmente são boas ferramentas, portanto vale a pena tentar.

Outra maneira de exportar bancos de dados (mas desta vez apenas esquema, sem dados) para o Azure é usando pacotes DAC (arquivos .dacpac extraídos do Management Studio ou Visual Studio 2010). Isso funciona apenas no SQL 2008 R2 SP1 +.

Você pode ler detalhes sobre os aplicativos da camada de dados aqui:

Marian
fonte
0

você pode usar o assistente de importação de dados do SSMS. Aqui está um bom post sobre isso, com fotos. O ponto principal é selecionar o provedor de dados .NET para o banco de dados de origem. Eu tive muitos problemas ao tentar fazê-lo funcionar com outros provedores (e padrão - nativos).

user16741
fonte