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

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

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

22 ответов


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

  1. использование служб SSIS (SQL Server Integration Services). Он только импортирует data в вашей таблице. Свойства столбцов, ограничения, ключи, индексы, хранимые процедуры, триггеры, параметры безопасности, пользователи, входы и т. д. не передаются. Однако это очень простой процесс и может быть сделано просто с помощью мастера в SQL Server Management Studio.
  2. использование комбинации создание служб SSIS и БД скрипты. Это даст вам данные и все отсутствующие метаданные, которые не передаются SSIS. Это тоже очень просто. Сначала передайте данные с помощью служб SSIS (см. инструкции ниже), затем создайте DB Create script из базы данных SQL Azure и повторно воспроизведите его в локальной базе данных.
  3. наконец, вы можете использовать служба импорта / экспорта в 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 data plus schema objects) очень просто. Сначала идите хоть шаги описанный выше, затем создайте сценарий создания БД (righ нажмите на базу данных в SSMS, выберите Generate Scripts -> Database Create). Затем повторно воспроизвести этот сценарий в локальной базе данных.

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


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

  1. экспорт базы данных SQL Azure в файл BACPAC в хранилище blob.
  2. изнутри SQL Management studio щелкните правой кнопкой мыши базу данных, нажмите кнопку "Импортировать приложение уровня данных".
  3. вам будет предложено ввести информацию для доступа к файлу BACPAC в хранилище Azure blob.
  4. нажмите next пару раз и... Готово!

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

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

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


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

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

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


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


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

  • подключение к базе данных SQL Azure.
  • щелкните правой кнопкой мыши базу данных в Обозревателе объектов.
  • выберите опцию "задачи" / "развернуть базу данных в SQL Azure".
  • на шаге "параметры развертывания" подключите локальный SQL Server и создайте новую базу данных.

enter image description here

"Далее" / "Далее" / "Готово"


используя msdeploy.exe

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

  1. скопировать строку подключения на странице свойств базы данных. Настройте его так, чтобы он содержал правильный пароль. database properties page
  2. получить строку подключения для целевой базы данных.
  3. Run 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 DB в пакет bacpac.

    "c:\Program Files (x86)\Microsoft SQL Server0\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 Server0\DAC\bin\SqlPackage.exe" /a:Import /SourceFile:"file.bacpac" /TargetServerName:".\SQLEXPRESS" /TargetDatabaseName:CopyOfAzureDb
    

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

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

но будьте осторожны, если вам также нужны данные, а также скрипты, обязательно проверьте Дополнительные параметры перед началом генерации...прокрутите вниз до "типы данных для сценария "и убедитесь, что у вас есть"схема и данные"...или что-то подходящее для тебя.

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

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

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


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

Другой альтернативой было бы синхронизация данных SQL Azure.

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


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

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

на видео в пост автор в блоге проходит через шесть этапов:

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

  2. сообщение в блоге советует сделать новый контейнер для файла bacpac и предлагает использовать Хранилище Azure Исследователь!--2--> для этого. (Б. Н. вам понадобится URL-адрес Blob и основной ключ доступа к хранилищу аккаунт для добавления это в Обозреватель хранилища Azure.)

  3. на портале управления Azure выберите нужную базу данных экспорт и нажмите "Экспорт" в разделе импорт и экспорт лента.

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

  5. после нажатия кнопки Готово база данных будет экспортирована в BACPAC файл. Это может занять некоторое время. Вы можете увидеть файл с нулевым байтом немедленно, если вы зарегистрируетесь в Azure Storage Explorer. Это Служба импорта / экспорта проверяет, имеет ли она доступ на запись в blob-store.

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

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


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

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

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


принятый ответ устарел. Я нашел лучший ответ: используйте Import Data-tier Application

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


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

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

https://sqlazuremw.codeplex.com/


Скачать Optillect SQL Azure Backup - Он имеет 15-дневную пробную версию, поэтому будет достаточно переместить вашу базу данных:)


вы можете использовать новые мобильные службы Azure для ночного экспорта резервных копий из SQL Azure в a .файл 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


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

более точно:

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

надеюсь, что это помогает!


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

  • подключение к базе данных SQL Azure.
  • щелкните правой кнопкой мыши базу данных в Обозревателе объектов.
  • выберите опцию "задачи" / "развернуть базу данных в SQL Azure".
  • на шаге "параметры развертывания" выберите подключение к локальной базе данных.
  • "Далее" / "Далее" / "Закончить"...

используйте службу импорта /экспорта в SQL Azure для создания.bacpac-файл.

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

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


Если у кого-то есть проблема с импортом Bacpac БД, которая использует синхронизация SQL Azure, Сандрино Ди Маттиа разработал Большое Простое приложение чтобы решить эту проблему.

  1. экспорт Bacpac вашего DB
  2. скачать Ди Маттиа бинарные
  3. С помощью этого консольного приложения восстановите загруженный Bacpac
  4. Lauch SSMS
  5. щелкните правой кнопкой мыши на "базы данных" и выберите " импортировать уровень данных Приложение"
  6. выберите отремонтированный Bacpac.

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

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

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


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

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


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

Шаг 1:

получите резервную копию из экземпляра azure следующим образом, Выберите база данных → щелкните правой кнопкой мыши → задачи → экспорт приложения уровня данных.

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

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

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

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

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

Шаг 6: подключитесь к локальному серверу и нажмите Databases → Import-Data-Tier-Application

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

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

читать мои блог с диаграммами.