Как скопировать базу данных SQL Azure на локальный сервер разработки?
кто-нибудь знает, как я могу скопировать базу данных SQL Azure на свою машину разработки? Я бы хотел перестать платить за базу данных разработки в облаке, но это лучший способ получить производственные данные. Я копирую свою производственную базу данных в новую базу данных разработки, но я хотел бы иметь ту же локальную базу данных.
какие предложения?
22 ответов
есть несколько способов сделать это:
-
использование служб SSIS (SQL Server Integration Services). Он только импортирует
data
в вашей таблице. Свойства столбцов, ограничения, ключи, индексы, хранимые процедуры, триггеры, параметры безопасности, пользователи, входы и т. д. не передаются. Однако это очень простой процесс и может быть сделано просто с помощью мастера в SQL Server Management Studio. - использование комбинации создание служб SSIS и БД скрипты. Это даст вам данные и все отсутствующие метаданные, которые не передаются SSIS. Это тоже очень просто. Сначала передайте данные с помощью служб SSIS (см. инструкции ниже), затем создайте DB Create script из базы данных SQL Azure и повторно воспроизведите его в локальной базе данных.
- наконец, вы можете использовать служба импорта / экспорта в 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 это, так как это правильный.
- экспорт базы данных SQL Azure в файл BACPAC в хранилище blob.
- изнутри SQL Management studio щелкните правой кнопкой мыши базу данных, нажмите кнопку "Импортировать приложение уровня данных".
- вам будет предложено ввести информацию для доступа к файлу BACPAC в хранилище Azure blob.
- нажмите next пару раз и... Готово!
Я думаю, что теперь это намного проще.
- запустите SQL Management Studio
- Правой Кнопкой Мыши на "базы данных" и выберите "Импорт приложения уровня данных..."
- мастер проведет вас через процесс подключения к учетной записи 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 и создайте новую базу данных.
"Далее" / "Далее" / "Готово"
используя msdeploy.exe
предостережение: msdeploy.exe
не удается создать целевую базу данных самостоятельно, поэтому сначала вам нужно создать ее вручную.
- скопировать строку подключения на странице свойств базы данных. Настройте его так, чтобы он содержал правильный пароль.
- получить строку подключения для целевой базы данных.
-
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
-
экспорт 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"
-
импорт пакета в локальную БД.
"c:\Program Files (x86)\Microsoft SQL Server0\DAC\bin\SqlPackage.exe" /a:Import /SourceFile:"file.bacpac" /TargetServerName:".\SQLEXPRESS" /TargetDatabaseName:CopyOfAzureDb
Это довольно легко. Это сработало для меня...с точки зрения получения базы данных SQL Azure на локальном компьютере...:
- откройте SQL Management Studio и подключитесь к Azure SQL Server.
- выберите базу данных, которую вы хотели бы получить на локальном компьютере, и щелкните правой кнопкой мыши...выберите "Создать сценарии". Следовать подсказкам...
но будьте осторожны, если вам также нужны данные, а также скрипты, обязательно проверьте Дополнительные параметры перед началом генерации...прокрутите вниз до "типы данных для сценария "и убедитесь, что у вас есть"схема и данные"...или что-то подходящее для тебя.
Это даст вам хороший файл сценария 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/
на видео в пост автор в блоге проходит через шесть этапов:
создайте или перейдите к учетной записи хранения на портале управления Azure. Вам понадобится URL-адрес Blob и основной ключ доступа к хранилищу счет.
сообщение в блоге советует сделать новый контейнер для файла bacpac и предлагает использовать Хранилище Azure Исследователь!--2--> для этого. (Б. Н. вам понадобится URL-адрес Blob и основной ключ доступа к хранилищу аккаунт для добавления это в Обозреватель хранилища Azure.)
на портале управления Azure выберите нужную базу данных экспорт и нажмите "Экспорт" в разделе импорт и экспорт лента.
в результате диалога требуется имя пользователя и пароль для база данных, URL-адрес blob и ключ доступа. Не забудьте включить контейнер в URL blob и включить имя файла (например, https://testazurestorage.blob.core.windows.net/dbbackups/mytable.bacpac).
после нажатия кнопки Готово база данных будет экспортирована в BACPAC файл. Это может занять некоторое время. Вы можете увидеть файл с нулевым байтом немедленно, если вы зарегистрируетесь в Azure Storage Explorer. Это Служба импорта / экспорта проверяет, имеет ли она доступ на запись в blob-store.
после этого вы можете использовать хранилище 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.
пожалуйста, проверьте более подробную информацию здесь.
Скачать 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).
более точно:
- создать пустую целевую БД вручную;
- щелкните правой кнопкой мыши исходный DB > задачи > создать сценарии;
- запустить файл скрипта на пустой целевой БД (теперь БД имеет правильные ограничения PKs/FKs/, но нет данных);
- отключить все ограничения;
- импорт данных (щелкните правой кнопкой мыши целевой БД > задачи > импорт данных);
- Включить ограничения.
надеюсь, что это помогает!
теперь для этого можно использовать среду SQL Server Management Studio.
- подключение к базе данных SQL Azure.
- щелкните правой кнопкой мыши базу данных в Обозревателе объектов.
- выберите опцию "задачи" / "развернуть базу данных в SQL Azure".
- на шаге "параметры развертывания" выберите подключение к локальной базе данных.
- "Далее" / "Далее" / "Закончить"...
используйте службу импорта /экспорта в SQL Azure для создания.bacpac-файл.
затем взгляните на этот метод в другой статье переполнения стека.
Если у кого-то есть проблема с импортом Bacpac БД, которая использует синхронизация SQL Azure, Сандрино Ди Маттиа разработал Большое Простое приложение чтобы решить эту проблему.
- экспорт Bacpac вашего DB
- скачать Ди Маттиа бинарные
- С помощью этого консольного приложения восстановите загруженный Bacpac
- Lauch SSMS
- щелкните правой кнопкой мыши на "базы данных" и выберите " импортировать уровень данных Приложение"
- выберите отремонтированный 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. Ниже приведена ссылка, объясняющая, как использовать этот инструмент, а также доступное приложение для скачать.
Я всегда использую функцию импорта / экспорта, которая кажется самой простой среди всех.
Шаг 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: дайте имя для вашей базы данных для восстановления.
теперь вы увидите все в зеленом цвете!
читать мои блог с диаграммами.