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


164

Хтось знає, як я можу скопіювати базу даних SQL Azure на свою розроблювальну машину? Я хотів би перестати платити, щоб мати базу даних розробок у хмарі, але це найкращий спосіб отримати виробничі дані. Я копіюю свою виробничу базу даних у нову базу даних розробок, але я хотів би мати ту саму базу даних локальною.

Будь-які пропозиції?


2
Я використовую цю майже завжди! Він невеликий, безкоштовний, постійно оновлюється, не встановлює зайвих файлів, працює як шарм, не створює жодних небажаних об’єктів у базі даних і робить саме те, що називається.
астайков

4
Це стало значно простіше. Дивіться відповідь Atom нижче (лютий 2018 р.), Де пояснюється, як використовувати Завдання => Розгортання бази даних ... у SSMS.
Джон Кроуелл

Відповіді:


129

Існує кілька способів зробити це:

  1. Використання SSIS (послуги інтеграції SQL Server) . Він імпортується лише dataу вашу таблицю. Властивості, обмеження, стовпці, ключі, індекси стовпців, тригери, параметри безпеки, користувачі, логотипи тощо не передаються. Однак це дуже простий процес і його можна виконати, просто пройшовши майстра в SQL Server Management Studio.
  2. Використання комбінації сценаріїв створення SSIS та БД . Це отримає вам дані та всі відсутні дані метаданих, які не передаються SSIS. Це теж дуже просто. Спочатку перенесіть дані за допомогою SSIS (див. Інструкції нижче), потім створіть сценарій DB Create з бази даних SQL Azure та повторно відтворіть їх у вашій локальній базі даних.
  3. Нарешті, ви можете використовувати службу імпорту / експорту в SQL Azure . Це передає дані (з об'єктами схеми) в Azure Blob Storage як BACPAC. Вам знадобиться обліковий запис Azure Storage та зробіть це на веб-порталі Azure. Це так само просто, як натискання кнопки "Експорт" на веб-порталі Azure, коли ви вибираєте базу даних, яку потрібно експортувати. Мінус у тому, що це лише ручна процедура, я не знаю способу автоматизувати це за допомогою інструментів чи скриптів - принаймні першої частини, яка вимагає клацання веб-сторінки.

Ручна процедура способу №1 (за допомогою SSIS) полягає в наступному:

  • У студії управління сервером Sql (SSMS) створіть нову порожню базу даних у вашому локальному екземплярі SQL.
  • Виберіть Імпорт даних із контекстного меню (клацніть правою кнопкою миші базу даних -> Завдання -> Імпортувати дані ...)
  • Введіть параметри з'єднання для джерела (SQL Azure). Виберіть в якості постачальника ".Net Framework Data Data Provider для SqlServer".
  • Виберіть наявну порожню локальну базу даних як пункт призначення.
  • Дотримуйтесь майстра - ви зможете вибрати дані таблиць, які ви хочете скопіювати. Ви можете пропустити будь-яку з таблиць, які вам не потрібні. Наприклад, якщо ви зберігаєте журнали додатків у базі даних, вам, ймовірно, він не потрібен у вашій резервній копії.

Ви можете автоматизувати його, створивши пакет SSIS та повторно виконуючи його будь-коли, коли хочете повторно імпортувати дані. Зауважте, що ви можете імпортувати за допомогою SSIS лише в чисту БД, ви не можете робити поступові оновлення вашої локальної бази даних, як тільки ви це зробили один раз.

Метод №2 (дані SSID плюс об'єкти схеми) дуже простий. Спочатку перейдіть через описані вище кроки, а потім створіть сценарій створення БД (правий клацання по базі даних в SSMS, виберіть Створення скриптів -> Створення бази даних). Потім відтворіть цей сценарій у локальній базі даних.

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


2
Це працює, лише одна корекція. У майстрі імпорту / експорту сервера Джерелом даних є ".Net Framework Data Provider for SqlServer"
BZink

Чудово! Дякуємо за виправлення Пам'ятаю, один з провайдерів працював, а деякі інші не працювали на мене, але не згадували, який саме.
seva titov

Помилка для мене: "Помилка вставки в колонку" id "лише для читання"
dumbledad

3
Трюком для мене було почати реплікацію ПК / ФК / обмежень на порожню БД, а потім тимчасово відключити обмеження під час імпорту даних. Точніше: 1-Створити порожню цільову БД вручну. Клацніть правою кнопкою миші джерело БД> Завдання> Створити сценарії. 3-запущений файл сценарію в порожній цільовій БД (тепер БД має правильні ПК / ФК / обмеження, але даних немає). 4-Вимкнення всіх обмежень ( stackoverflow.com/a/161410 ). 5-імпорт даних (клацніть правою кнопкою миші цільова БД> Завдання> Імпорт даних). 6-повторно включити обмеження. Сподіваюся, це допомагає!
Матьє Фрінетт

1
@JoSmo, методи №1 та №2 не потребують облікового запису пам’яті. Однак я рекомендую мати обліковий запис пам’яті в тому самому центрі обробки даних, що і ваша база даних SQL Azure. Причина полягає в тому, що ви можете використовувати його для резервного копіювання та відновлення БД. Якщо у вас немає адміністративних прав для вашої підписки на Azure, знайдіть когось у вашій організації, який має достатньо прав для створення нових облікових записів пам’яті та надання вам ключів доступу до нього. Оскільки ви вже маєте доступ до бази даних, немає причин забороняти доступ до облікового запису пам’яті.
seva titov

66

Скопіюйте дані бази даних Azure в локальну базу даних: Тепер ви можете використовувати студію управління SQL Server для цього, як це зроблено нижче:

  • Підключіться до бази даних SQL Azure.
  • Клацніть правою кнопкою миші базу даних у Провіднику об’єктів.
  • Оберіть опцію "Завдання" / "Розгорнути базу даних у Azure Azure".
  • На кроці під назвою "Налаштування розгортання" підключіть локальний SQL Server та створіть Нову базу даних.

введіть тут опис зображення

"Далі" / "Далі" / "Завершити"


9
Чудово👏🏻 в SSMS це не так зрозуміло, оскільки "розгортання бази даних в SQL AZURE" дещо вводить в оману ...
EeKay

12
На сьогоднішній день найпростішим рішенням, змішаним із найнеобхіднішою назвою меню. Дякуємо, що опублікували це.
Кевін Гішевський

Це найпростіше, але недоліком є ​​те, що ви не можете вибрати, які таблиці ви хочете створити для резервного копіювання, а які не потрібно. У моїй компанії у нас є таблиця додатків, яка містить гігабайти вкладених файлів (фотографії тощо). Зазвичай ми цього не хочемо, оскільки це буде назавжди копіювати. Ми не можемо виключити цю таблицю за допомогою цього методу.
Росді Касім

33

Я просто хотів додати спрощену версію відповіді dumbledad , оскільки вона є правильною.

  1. Експортуйте базу даних SQL Azure в файл BACPAC на сховищі blob.
  2. Зсередини студії управління SQL клацніть правою кнопкою миші вашу базу даних і натисніть "імпортувати додаток рівня даних".
  3. Вам буде запропоновано ввести інформацію, щоб потрапити до файлу BACPAC на сховищі блоку Azure.
  4. Удар наступного пару разів і ... Готово!

4
Я отримую помилку, кажучи, що мета не може бути sql azure v12?
Zapnologica

2
Переконайтеся, що у вас є версія SSMS, яка буде імпортувати BACPAC: msdn.microsoft.com/en-us/library/mt238290.aspx
Пол Буллівант

Навіть із цією версією SSMS я все одно отримую помилку через цільовий Azure sql db 12.
Preza8,

28

У студії управління SQL Server 2016 процес впорядкування лазурної бази даних на локальній машині був упорядкований.

Клацніть правою кнопкою миші на базі даних, яку потрібно імпортувати, виберіть Завдання> Експорт додатка рівня даних та експортуйте свою базу даних у локальний файл .dacpac.

У вашому локальному екземплярі цільового сервера SQL ви можете клацнути правою кнопкою миші Бази даних> Імпортувати додаток рівня даних , і як тільки він буде локальним, ви можете робити такі дії, як резервне копіювання та відновлення бази даних.


5
Це воно. NB. "Експорт рівня даних" включає дані, "Витяг рівня даних" дає лише визначення
Колін

20

Я думаю, зараз це набагато простіше.

  1. Запустіть SQL Management Studio
  2. Клацніть правою кнопкою миші на "Бази даних" та виберіть "Імпорт додатка рівня даних ..."
  3. Майстер проведе вас під час підключення до вашого облікового запису Azure, створення файлу BACPAC та створення вашої бази даних.

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


9

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


1
Синхронізація даних SQL не повинна використовуватися як частина вашої стратегії резервного копіювання, оскільки існує кілька обмежень. Він не має версії, він лише створює резервні копії даних та інших об'єктів. Для отримання додаткової інформації див тему поширених запитань щодо синхронізації даних SQL. ( msdn.microsoft.com/en-us/library/windowsazure/jj650016.aspx )
Shaun Luttin

1
Синхронізація даних є досить жахливою - навіть сьогодні (через кілька років після цієї публікації) є маса помилок, і вона може справді перекрутити ваш db - вона також має багато обмежень.
Вільям

5

Це досить просто. Це працювало для мене ... з точки зору зниження бази даних SQL Azure на локальній машині ...:

  1. Відкрийте свою студію управління SQL та підключіться до свого сервера Azure SQL.
  2. Виберіть базу даних, яку ви хочете зійти на вашу локальну машину, і клацніть правою кнопкою миші ... виберіть "Створити сценарії". Дотримуйтесь підказок ...

Але будьте обережні, якщо ви також хочете DATA, а також сценарії, не забудьте перевірити розширені параметри перед початком створення ... прокрутіть униз до "Типи даних до сценарію" та переконайтеся, що у вас є " Схема та дані "... або все, що підходить вам.

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

Майте на увазі, що в моєму випадку я не маю ФК чи інших обмежень ... також, це було не так багато даних.

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


2
Я мушу сказати, що це спрацювало надзвичайно добре, без суєти; іноземні ключі відтворені ідеально. Отриманий скрипт SQL був занадто великим, щоб відкрити його в SSMS або взагалі у багатьох текстових редакторах, але я зміг використати командний рядокsqlcmd /S <server> /d <database> -E -i <azure_dump.sql>
перлінг

5

Використання msdeploy.exe

Caveat: msdeploy.exeне вдається самостійно створити базу даних призначення, тому спочатку потрібно створити її.

  1. Скопіюйте рядок з'єднання на сторінку властивостей бази даних. Відрегулюйте його так, щоб він містив правильний пароль. сторінка властивостей бази даних
  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

4

Спробуйте це: http://mooneyblog.mmdbsolutions.com/index.php/2011/01/11/simple-database-backups-with-sql-azure/ .

Іншою альтернативою може бути SQL Azure Data Sync .

Є ще одна публікація в блозі, яку я натрапив на кілька днів тому, але зараз не зміг її знайти. Я оновлю цю публікацію, як тільки знайду її.


Ось ще одне посилання, про яке я згадував у своєму дописі раніше: bmegias.wordpress.com/2010/09/14/…
Gaurav Mantri-AIS

3

У студії управління SQL Server

Клацніть правою кнопкою миші на базі даних, яку потрібно імпортувати, виберіть Завдання> Експортувати додаток рівня даних та експортуйте свою базу даних у локальний файл .dacpac.

У вашому локальному екземплярі цільового сервера SQL ви можете клацнути правою кнопкою миші Бази даних> Імпортувати додаток рівня даних, і як тільки він буде локальним, ви можете робити такі дії, як резервне копіювання та відновлення бази даних.


2

Не вдалося імпортувати / експортувати 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 . (Зверніть увагу: вам потрібні URL-адреса Blob та Первинний ключ доступу облікового запису пам’яті, щоб додати його до провідника зберігання Azure.)

  3. На порталі управління Azure виберіть базу даних, яку потрібно експортувати, та натисніть "Експорт" у розділі Імпорт та експорт стрічки.

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

  5. Після натискання кнопки Готово база даних буде експортована у файл BACPAC. Це може зайняти деякий час. Можливо, ви побачите, що файл нульового байту відображається негайно, якщо зареєструватися в Провіднику зберігання Azure. Це Служба імпорту / експорту перевіряє, чи має він доступ на запис до магазину blob.

  6. Після цього ви можете використовувати провідник зберігання Azure для завантаження файлу BACPAC, а потім у студії управління SQL Server правою кнопкою миші клацніть папку бази даних локального сервера та виберіть Імпорт додатка рівня даних, який запустить майстра, який читає у файлі BACPAC створити копію вашої бази даних Azure. Майстер також може підключитися безпосередньо до магазину blob, щоб отримати файл BACPAC, якщо ви бажаєте спочатку не скопіювати його локально.

Останній крок може бути доступний лише у виданні SQL Server 2012 Студії управління SQL Server (це версія, яку я запущу). Більш ранніх на цій машині у мене немає для перевірки. У публікації щоденника автор використовує інструмент командного рядка DacImportExportCli.exe для імпорту, який, на мою думку, доступний за посиланням http://sqldacexamples.codeplex.com/releases


Хоча я не дотримувався цього точно, це вело мене в правильному напрямку. Ви можете пропустити завантаження файлу bacpac та вказати на сховище Azure Blob безпосередньо зсередини студії управління SQL Server.
Джош Муш

2

Щодо "Я не міг змусити імпорт / експорт SSIS працювати, тому що я отримав помилку" Невдача вставки в стовпчик "id" для "лише для читання". Про це можна усунути, вказавши на екрані відображення, що ви хочете зробити дозволити вставляти елементи ідентичності

Після цього все працювало чудово за допомогою майстра імпорту / експорту SQL для копіювання з Azure в локальну базу даних.

У мене були лише майстер імпорту / експорту SQL, який поставляється із SQL Server 2008 R2 (прекрасно працював) та Visual Studio 2012 Express для створення локальної бази даних.



2

Можна спробувати за допомогою інструменту "Майстер міграції баз даних SQL". Цей інструмент надає можливість імпорту та експорту даних з azure sql.

Будь ласка, ознайомтеся з детальніше тут.

https://sqlazuremw.codeplex.com/


1

Ви можете використовувати нові послуги Azure Mobile, щоб здійснити нічний експорт резервного копіювання з 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


Це виглядає дійсно перспективно! Будь-яка ідея, чи буде це працювати з Федераціями Azure?
Тім Лентін

@Тим шкода, що я не знаю. Робити це через Мобільні послуги - це вирішення для початку, тому я не здивуюсь, якщо цього не стане.
Бен Баррет

1

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

Крок 1:

Отримайте резервну копію з лазерного екземпляра наступним чином. Виберіть базу даних → Клацніть правою кнопкою миші → Завдання → Експорт додатка рівня даних.

Крок 2. Укажіть конкретне ім’я для файлу резервної копії та збережіть його у потрібному місці

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

Крок 4: Дозволяє завантажити скрипт повноважень, щоб видалити головний ключRemoveMasterKey .

Крок 5: Запустіть сценарій наступним чином. \ RemoveMasterKey.ps1 -bacpacPath "C: \ ident.bacpac"

Це все, тепер ви можете відновити його на MSSQL 2017 у вашому локальному середовищі.

Крок 6: Підключіться до локального сервера та натисніть Бази даних → Імпорт-Data-Tier-Application

Крок 7 : Дайте ім’я для відновлення вашої бази даних.

Тепер ви побачите все в зеленому кольорі!

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


0

Завантажте резервну копію Optillect SQL Azure - вона має 15-денну пробну версію, тому її буде достатньо для переміщення вашої бази даних :)


Це посилання на внутрішній інструмент. Припустимо, що ОП означало посилання на відставний інструмент Red Gate ( red-gate.com/products/dba/sql-azure-backup ) або на цей проект на CodePlex ( sqlazurebackup.codeplex.com )
Josh

0

Хитрість для мене полягала в тому, щоб почати реплікацію ПК / FK / обмежень на порожній БД, а потім тимчасово відключити обмеження під час імпорту даних (див. Https://stackoverflow.com/a/161410 ).

Точніше:

  1. Створити порожню цільову БД вручну;
  2. Клацніть правою кнопкою миші джерело БД> Завдання> Створення скриптів;
  3. Запустити файл сценарію в порожній цільовій БД (тепер БД має правильні ПК / ФК / обмеження, але даних немає);
  4. Вимкнути всі обмеження;
  5. Імпорт даних (клацніть правою кнопкою миші цільова БД> Завдання> Імпортувати дані);
  6. Повторно увімкніть обмеження.

Сподіваюся, це допомагає!


0

Тепер ви можете використовувати студію управління SQL Server для цього.

  • Підключіться до бази даних SQL Azure.
  • Клацніть правою кнопкою миші базу даних у Провіднику об’єктів.
  • Оберіть опцію "Завдання" / "Розгорнути базу даних у Azure Azure".
  • На кроці під назвою "Налаштування розгортання" виберіть підключення до локальної бази даних.
  • "Далі" / "Далі" / "Завершити" ...

Я не міг цього зробити, тому що кнопка "Далі" замурована, поки я не обраю іншу базу даних Azure як цільове з'єднання
Колін


0

Якщо у когось є проблема імпортувати Bacpac з БД, що використовує синхронізацію Azure SQL , Sandrino Di Mattia розробив чудове просте додаток для вирішення цього питання.

  1. Експортуйте Bacpac вашої БД
  2. Халявний Ді Маттіа в довічним
  3. За допомогою цього консольного додатка відновіть завантажений Bacpac
  4. Запустіть SSMS
  5. Клацніть правою кнопкою миші на "Бази даних" та виберіть "Імпорт додатка рівня даних"
  6. Виберіть відремонтований Bacpac.

0

Якщо хтось хоче безкоштовний та ефективний варіант (і не проти робити це вручну) для резервного копіювання бази даних у Local, тоді використовуйте схему та функціональні можливості порівняння даних, вбудовані в останню версію Microsoft Visual Studio 2015 Community Edition (безкоштовно) або Professional / Premium / Ultimate видання. Це працює як шарм!

У мене є акаунт BizPark в Azure, і немає ніякого способу резервного копіювання бази даних без оплати. Цей варіант я знайшов у роботах VS.

Відповідь взята з https://stackoverflow.com/a/685073/6796187


0

Привіт, я використовую інструмент SQLAzureMW для міграції та управління БД SQLAzure. Дуже корисний. Він був завантажений з codeplex, але наразі він недоступний, кодплекс буде закриватися, той самий інструментарій тепер доступний у GttHub. На цьому посиланні нижче пояснюється, як користуватися цим інструментом, а також доступна програма для завантаження.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.