Как скопировать базу данных SQL Azure в локальный экземпляр SQL Server?

12

У меня есть база данных OLTP, размещенная на экземпляре SQL Azure. Я хочу вытащить копию базы данных из облака, чтобы я мог выполнять некоторые тяжелые извлечения и запросы в стиле OLAP, не влияя на исходную базу данных.

Как вытащить копию базы данных на локальный экземпляр SQL Server?

Ник Чаммас
источник

Ответы:

9

Используйте мастер миграции SQL Azure :

Мастер миграции SQL Azure (SQLAzureMW) предоставляет вам возможности для анализа, создания сценариев и переноса данных (через BCP) из:

  1. SQL Server для SQL Azure
  2. SQL Azure для SQL Server
  3. SQL Azure для SQL Azure
Ник Чаммас
источник
Кажется, не работает с LocalDB, у меня есть ошибка, говорящая, что «Шифрование не поддерживается» на этапе, когда вы выбираете целевую базу данных. Инструмент не может подключиться к моему экземпляру
localdb
@ red2nb - я ничего не знаю о LocalDB, но, возможно, поскольку ошибка предполагает, что это не проблема с LocalDB, а проблема с зашифрованной целевой базой данных.
Ник Чаммас
4

Составьте bcpскрипт, который экспортирует содержимое всех ваших таблиц в локальные файлы.

Начните с написания запроса, который выведет bcpкоманду для экспорта каждой таблицы в вашей целевой базе данных в путь на вашем компьютере назначения:

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;

Выполните этот запрос, используя bcpвашу базу данных SQL Azure с компьютера, на который вы хотите скопировать, и сохраните результаты в cmdфайл. Выполните этот cmdфайл, чтобы экспортировать каждую таблицу в текстовый файл.

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

Это быстрый и грязный подход, который не подходит для больших баз данных или сложных схем.

Ник Чаммас
источник
2

Я заметил, что в этом списке есть новый инструмент, это Idera Azure SQL Database Backup . Это бесплатно, и они обычно делают хорошие инструменты, так что стоит попробовать.

Другой способ экспорта баз данных (но на этот раз только схемы, без данных) в Azure - использование пакетов DAC (файлы .dacpac, извлеченные из Management Studio или Visual Studio 2010). Это работает только с SQL 2008 R2 SP1 +.

Вы можете прочитать подробности о приложениях уровня данных здесь:

Мэриан
источник
0

Вы можете использовать мастер импорта данных SSMS. Вот хороший пост в блоге об этом, с картинками. Ключевым моментом является выбор поставщика данных .NET для исходной базы данных. У меня было много проблем, пытаясь заставить его работать с другими (и по умолчанию - родными) провайдерами.

user16741
источник