it-roy-ru.com

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

Кто-нибудь знает, как я могу скопировать базу данных SQL Azure на мою машину разработки? Я хотел бы прекратить платить, чтобы иметь базу данных разработки в облаке, но это лучший способ получить производственные данные. Я копирую свою производственную базу данных в новую базу данных для разработки, но я бы хотел, чтобы эта же база данных была локальной. 

Какие-либо предложения? 

131
BZink

Есть несколько способов сделать это:

  1. Использование служб SSIS (службы интеграции SQL Server). Он импортирует только data в вашу таблицу. Свойства столбцов, ограничения, ключи, индексы, хранимые процедуры, триггеры, параметры безопасности, пользователи, входы в систему и т.д. Не передаются. Однако это очень простой процесс, который можно выполнить, просто пройдя мастер в SQL Server Management Studio. 
  2. Использование комбинации SSIS и сценариев создания БД. Это позволит вам получить данные и все недостающие метаданные, которые не передаются службами SSIS. Это тоже очень просто. Сначала перенесите данные с помощью служб SSIS (см. Инструкции ниже), затем создайте сценарий DB Create из базы данных SQL Azure и повторно воспроизведите его в локальной базе данных. 
  3. Наконец, вы можете использовать Import/Export service в SQL Azure. Это передает данные (с объектами схемы) в хранилище BLOB-объектов Azure в виде BACPAC. Вам понадобится учетная запись хранилища Azure и сделайте это на веб-портале Azure. Это так же просто, как нажать кнопку «Экспорт» на веб-портале Azure, когда вы выбираете базу данных, которую вы хотите экспортировать. Недостатком является то, что это только ручная процедура, я не знаю, как автоматизировать это с помощью инструментов или сценариев - по крайней мере, первая часть, которая требует нажатия на веб-странице.

Ручная процедура для метод # 1 (с использованием служб SSIS) следующая:

  • В Sql Server Management Studio (SSMS) создайте новую пустую базу данных на локальном экземпляре SQL.
  • Выберите Импорт данных из контекстного меню (щелкните правой кнопкой мыши базу данных -> Задачи -> Импорт данных ...)
  • Введите параметры подключения для источника (SQL Azure). Выберите «Поставщик данных .Net Framework для SqlServer» в качестве поставщика.
  • Выберите существующую пустую локальную базу данных в качестве места назначения.
  • Следуйте инструкциям мастера - вы сможете выбрать из таблиц данные, которые хотите скопировать. Вы можете пропустить любую таблицу, которая вам не нужна. Например. если вы храните журналы приложений в базе данных, вам, вероятно, не понадобится это в резервной копии. 

Вы можете автоматизировать его, создав пакет служб SSIS и выполнив его в любое время, когда захотите повторно импортировать данные. Обратите внимание, что вы можете импортировать только с использованием SSIS в чистую БД, вы не можете делать инкрементные обновления в вашей локальной базе данных, если вы уже сделали это один раз. 

Метод # 2 (данные SSID плюс объекты схемы) очень просто. Сначала выполните шаги, описанные выше, затем создайте сценарий создания БД (щелкните правой кнопкой мыши базу данных в SSMS, выберите «Создать сценарии» -> «Создание базы данных»). Затем переиграйте этот скрипт в вашей локальной базе данных.

Метод № 3 описывается в блоге здесь: http://dacguy.wordpress.com/2012/01/24/sql-Azure-importexport-service-has-hit-production/ , Существует видеоклип с процессом передачи содержимого БД в хранилище BLOB-объектов Azure в виде BACPAC. После этого вы можете скопировать файл локально и импортировать его в ваш экземпляр SQL. Процесс импорта BACPAC в приложение уровня данных описан здесь: http://msdn.Microsoft.com/en-us/library/hh710052.aspx .

119
seva titov

Я просто хотел добавить упрощенную версию ответа Дамблдада , так как он правильный.

  1. Экспортируйте базу данных SQL Azure в файл BACPAC в хранилище BLOB-объектов.
  2. В SQL Management studio щелкните правой кнопкой мыши свою базу данных и выберите «импортировать приложение уровня данных».
  3. Вам будет предложено ввести информацию, чтобы получить доступ к файлу BACPAC в вашем хранилище BLOB-объектов Azure.
  4. Хит следующий пару раз и ... Готово!
29
Josh Mouch

Я думаю, что теперь все намного проще.

  1. Запустить SQL Management Studio 
  2. Щелкните правой кнопкой мыши на «Базы данных» и выберите «Импортировать приложение уровня данных ...»
  3. Мастер проведет вас через процесс подключения к учетной записи Azure, создания файла BACPAC и создания базы данных.

Кроме того, я использую Sql Backup и FTP ( https://sqlbackupandftp.com/ ) для ежедневного резервного копирования на защищенный FTP-сервер. Я просто вытаскиваю оттуда недавний файл BACPAC, и он импортирует его в том же диалоговом окне, что позволяет быстрее и проще создать локальную базу данных.

20
ThisGuy

В SQL Server 2016 Management Studio процесс получения базы данных Azure на локальный компьютер был упрощен.

Щелкните правой кнопкой мыши базу данных, которую вы хотите импортировать, выберите Задачи> Экспорт приложения уровня данных и экспортируйте свою базу данных в локальный файл .dacpac.

В своем локальном целевом экземпляре SQL-сервера вы можете щелкнуть правой кнопкой мыши Базы данных> Импортировать приложение уровня данных , и, когда оно будет локальным, вы сможете выполнять такие операции, как резервное копирование и восстановление базы данных.

20
Adam Skinner

Скопируйте данные базы данных Azure в локальную базу данных: Теперь вы можете использовать SQL Server Management Studio, чтобы сделать это, как показано ниже:

  • Подключитесь к базе данных SQL Azure.
  • Щелкните правой кнопкой мыши базу данных в обозревателе объектов.
  • Выберите параметр «Задачи»/«Развернуть базу данных в SQL Azure».
  • На шаге «Параметры развертывания» подключите локальный SQL Server и создайте новую базу данных.

enter image description here

«Далее»/«Далее»/«Готово»

14
Atom

Вы также можете проверить Синхронизация данных SQL Azure на портале управления Windows Azure. Это позволяет вам извлекать и восстанавливать всю базу данных, включая схему и данные между SQL Azure и SQL Server.

8
Voclare

Это довольно легко. Это сработало для меня ... с точки зрения переноса базы данных SQL Azure на локальный компьютер ...:

  1. Откройте SQL Management Studio и подключитесь к Azure SQL Server.
  2. Выберите базу данных, которую вы хотите получить на свой локальный компьютер, и щелкните правой кнопкой мыши ... выберите «Создать сценарии». Следуйте инструкциям ...

НО, будьте осторожны в том, что если вы ТАКЖЕ хотите ДАННЫЕ, а также сценарии, обязательно проверьте Дополнительные параметры перед началом генерации ... прокрутите вниз до «Типы данных для сценария» и убедитесь, что у вас есть » Схема и данные "... или все, что подходит для вас.

Он выдаст вам файл сценария Nice SQL, который затем можно будет запустить на вашем локальном компьютере, и он создаст базу данных, а также заполнит ее всеми данными.

Не забывайте, что в моем случае у меня нет FK или других ограничений ... кроме того, данных было немного.

Я не рекомендую это как механизм резервного копирования в целом ...

4
Barry Theunissen

Использование msdeploy.exe

Предостережение: msdeploy.exe не может создать целевую базу данных самостоятельно, поэтому вам нужно сначала создать ее вручную.

  1. Скопируйте строку подключения на странице свойств базы данных. Настройте его так, чтобы он содержал правильный пароль .database properties page
  2. Получить строку подключения для целевой БД.
  3. Запустите msdeploy.exe так:

    "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
    

Использование SqlPackage.exe

  1. Экспортируйте базу данных Azure в пакет 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. Импортируйте пакет в локальную БД.

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

Пожалуйста, попробуйте это: http://mooneyblog.mmdbsolutions.com/index.php/2011/01/11/simple-database-backups-with-sql-Azure/ .

Другой альтернативой будет SQL Azure Data Sync .

Есть еще одно сообщение в блоге, которое я перебрал несколько дней назад, но не смог найти его сейчас. Я обновлю этот пост, как только найду его.

3
Gaurav Mantri

Можно попробовать с помощью инструмента «Мастер миграции баз данных SQL» . Этот инструмент предоставляет возможность импортировать и экспортировать данные из Azure sql.

Пожалуйста, проверьте более подробную информацию здесь.

https://sqlazuremw.codeplex.com/

2
Krishna_K_Systematix

Я не смог заставить работать импорт/экспорт служб SSIS, так как получил сообщение об ошибке «Ошибка при вставке в столбец« id »только для чтения». Также я не мог заставить http://sqlazuremw.codeplex.com/ работать, и ссылки выше на синхронизацию данных SQL Azure у меня не работали.

Но я нашел отличное сообщение в блоге о файлах BACPAC: http://dacguy.wordpress.com/2012/01/24/sql-Azure-importexport-service-has-hit-production/

В видео в посте автор блога проходит шесть шагов:

  1. Создайте или перейдите к учетной записи хранения на портале управления Azure . Вам потребуется URL-адрес BLOB-объекта и первичный ключ доступа к учетной записи хранения

  2. В блоге рекомендуется создать новый контейнер для файла bacpac и Предлагает использовать для этого хранилище Azure Explorer . (N.B . Вам понадобится URL-адрес BLOB-объекта и первичный ключ доступа к учетной записи хранилища , Чтобы добавить его в обозреватель хранилища Azure.) 

  3. На портале управления Azure выберите базу данных, которую вы хотите экспортировать , И нажмите «Экспорт» в разделе «Импорт и экспорт» ленты

  4. В появившемся диалоговом окне требуются имя пользователя и пароль для базы данных , URL-адрес BLOB-объекта и ключ доступа. Не забудьте включить Контейнер в URL-адрес BLOB-объекта и включить имя файла (например, https://testazurestorage.blob.core.windows.net/dbbackups/mytable.bacpac ).

  5. После нажатия кнопки «Готово» база данных будет экспортирована в файл BACPAC Это может занять некоторое время. Вы можете увидеть, что файл нулевого байта сразу появится , Если вы проверите в обозревателе хранилищ Azure. Это служба импорта и экспорта , Которая проверяет, имеет ли она право на запись в хранилище BLOB-объектов

  6. После этого вы можете использовать обозреватель хранилища Azure для загрузки Файла BACPAC, а затем в SQL Server Management Studio Щелкните правой кнопкой мыши папку базы данных на локальном сервере и выберите «Импорт». Приложение уровня данных, которое запустится. мастер, который читает файл BACPAC, чтобы создать копию базы данных Azure. Мастер Может также подключиться напрямую к хранилищу BLOB-объектов, чтобы получить файл BACPAC , Если вы не хотите сначала копировать его локально.

Последний шаг может быть доступен только в выпуске SQL Server 2012 SQL Server Management Studio (это версия, которую я использую). У меня нет более ранних на этой машине, чтобы проверить. В сообщении в блоге автор использует инструмент командной строки DacImportExportCli.exe для импорта, который, я считаю, доступен по адресу http://sqldacexamples.codeplex.com/releases

2
dumbledad

Принятый ответ устарел. Я нашел лучший ответ: использовать приложение импорта данных уровня

Более подробную информацию см. В этой статье: Восстановление базы данных SQL Azure на локальный сервер

2
Weimin Ye

Относительно «Я не смог заставить работать/импортировать SSIS, так как получил ошибку« Ошибка при вставке в столбец «id» только для чтения ». Это можно обойти, указав на экране сопоставления, что вы хочу разрешить вставку элементов Identity.

После этого все работало нормально, используя мастер импорта/экспорта SQL для копирования из Azure в локальную базу данных.

У меня был только SQL Import/Export Wizard, который поставляется с SQL Server 2008 R2 (работал нормально) и Visual Studio 2012 Express для создания локальной базы данных.

2
rsh

Загрузите Optillect SQL Azure Backup - он имеет 15-дневную пробную версию, поэтому его будет достаточно для перемещения вашей базы данных :)

1
Optillect Team

Я всегда использую функцию импорта/экспорта, которая кажется самой простой среди всех.

Шаг 1:

Получите резервную копию из экземпляра Azure следующим образом. Выберите database → Правой кнопкой мыши → Задачи → Экспортировать приложение уровня данных.

Шаг 2: Укажите конкретное имя для файла резервной копии и сохраните его в нужном месте.

Шаг 3: Вот так вы и сделали резервную копию базы данных из экземпляра sql в локальную. Давайте восстановим его до местного. Скопируйте резервную копию базы данных на ваш диск C. Теперь откройте PowerShell с правами администратора и перейдите на диск C

Шаг 4: Давайте загрузим скрипт powershell, чтобы удалить мастер keyRemoveMasterKey.ps1 иметь скрипт на том же диске, в данном случае его C.

Шаг 5: Запустите скрипт следующим образом .\RemoveMasterKey.ps1 -bacpacPath "C:\identity.bacpac"

Вот и все, теперь вы можете восстановить его на MSSQL 2017 в вашей локальной среде.

Шаг 6: Подключитесь к локальному серверу и выберите Базы данных → Import-Data-Tier-Application

Шаг 7: Дайте имя вашей базе данных для восстановления. 

Теперь вы увидите все зеленым!

Прочитайте мой блог с диаграммами.

1
Sajeetharan

Вы можете использовать новые мобильные службы Azure для выполнения еженедельного экспорта резервной копии из SQL Azure в файл .bacpac, размещенный в хранилище Azure. Это решение является 100% облачным, не требует сторонних инструментов и не требует локального размещенного экземпляра SQL Server для загрузки/копирования/резервного копирования чего-либо. 

Там около 8 разных шагов, но все они просты: http://geekswithblogs.net/BenBarreth/archive/2013/04/15/how-to-create-a-nightly-backup-of- your-sql-Azure.aspx

1
Ben Barreth

Используйте службу импорта/экспорта в SQL Azure, чтобы создать файл .bacpac.

Затем взгляните на этот метод в другой статье о переполнении стека.

Локальное восстановление базы данных SQL Azure Bacpac

0
Jeff Bailey

Уловка для меня заключалась в том, чтобы начать репликацию PKs/FKs/ограничений на пустую БД, а затем временно отключить ограничения при импорте данных (см. https://stackoverflow.com/a/161410 ).

Точнее:

  1. Создать пустую целевую БД вручную;
  2. Щелкните правой кнопкой мыши исходную БД> Задачи> Создать сценарии;
  3. Запустить файл сценария на пустой целевой БД (теперь БД имеет правильные PK/FKs/ограничения, но не имеет данных);
  4. Отключить все ограничения;
  5. Импорт данных (щелкните правой кнопкой мыши целевую БД> Задачи> Импорт данных);
  6. Снова включите ограничения.

Надеюсь это поможет!

0
Mathieu Frenette

Если у кого-то возникла проблема с импортом Bacpac БД, использующей Azure SQL Sync, Сандрино Ди Маттиа разработал отличное простое приложение , чтобы решить эту проблему.

  1. Экспорт Bacpac вашей БД
  2. Скачать Ди Маттиа двоичный файл
  3. С помощью этого консольного приложения восстановите загруженный Bacpac
  4. Лаух ССМС
  5. Щелкните правой кнопкой мыши «Базы данных» и выберите «Импортировать приложение уровня данных».
  6. Выберите отремонтированный Bacpac.
0
Géza

Если кто-то хочет получить бесплатную и эффективную возможность (и не прочь сделать это вручную) для резервного копирования базы данных в локальную, используйте функцию сравнения схем и данных, встроенную в последнюю версию Microsoft Visual Studio 2015 Community Edition (бесплатная версия) или Professional/Premium/Ultimate. издание. Отлично работает!

У меня есть учетная запись BizPark в Azure, и нет способа сделать резервную копию базы данных напрямую, не заплатив. Я нашел эту опцию в VS работает. 

Ответ взят из https://stackoverflow.com/a/685073/6796187

0
Crennotech

Теперь вы можете использовать SQL Server Management Studio для этого.

  • Подключитесь к базе данных SQL Azure.
  • Щелкните правой кнопкой мыши базу данных в обозревателе объектов.
  • Выберите параметр «Задачи»/«Развернуть базу данных в SQL Azure».
  • На шаге «Параметры развертывания» выберите подключение к локальной базе данных.
  • «Далее»/«Далее»/«Готово» ...
0
ferhrosa

Привет! Я использую инструмент SQLAzureMW для миграции и управления БД SQLAzure. Очень полезный Он был загружен из codeplex, но в настоящее время он недоступен, кодплекс будет отключен, теперь в GttHub доступен тот же инструмент приложения. Ниже ссылка объясняет, как использовать этот инструмент, а также доступно приложение для загрузки.

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

0
Raja Subbiah