Локальне відновлення Bacpac бази даних Azure SQL


130

Я створив резервну копію BACPAC моєї бази даних Azure SQL за допомогою параметра "Експорт" в консолі управління Azure.

Завантаживши це на свою машину, я трохи зупинився на тому, як я можу відновити це до локального екземпляра SQL Server. Я натрапив на інструмент DacImportExportCli, але не зміг знайти приклад локального відновлення.

Крім того, якщо хтось написав сценарій, який робить це (щоб це було заплановано), це було б дивним.


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

Ви коли-небудь розбиралися в цьому?
Нейт

3
@dumbledad Я вважаю, що це імпорт додатка рівня даних для SQL 2012 SSMS, 2008R2, здається, має лише можливість експортувати DACPAC, не може бачити опцію імпорту.
jamiebarrow

Відповіді:


179

Це можна зробити просто через SQL Server Management Studio 2012

  1. Клацніть правою кнопкою миші на вузол З'єднання> Бази даних та оберіть " Імпорт додатка рівня даних ... "
  2. На кроці введення виберіть " Далі ".
  3. введіть тут опис зображення
  4. Перегляньте або підключіться до облікового запису, де зберігаються резервні копії.

2
Це прекрасно. Інструмент RedGate може бути лускатим. Я радий бачити варіант, що підтримується MS.
gilly3

2
Чи працює це з sql express 2012? Оскільки у мене є таке повідомлення про помилку: Порахуйте не завантажуйте модель схеми з пакета. (Microsoft.SqlServer.Dac) ------------------------------ ДОДАТКОВА ІНФОРМАЦІЯ: Внутрішня помилка. Внутрішня цільова платформа типу SqlAzureDatabaseSchemaProvider не підтримує версію файлу схеми '2.5'. (Файл: C: \ Users \ xxxxx \ Downloads \ dbname-2013-10-10-20-2.bacpac) (Microsoft.Data.Tools.Schema.Sql)
Антуан Мельтцхайм

@ElTone Я щойно відновив бакпайк безпосередньо з Azure Storage до моєї локальної бази даних SQL Server Express 2012 за допомогою студії управління. Не бачив жодних помилок і дані, здається, є. Хтось згадує, що встановлення нової версії інструментів даних SQL Server допомогло їм (але вони не посилаються на студію управління) social.msdn.microsoft.com/Forums/windowsazure/en-US/…
Juha Palomäki

@Juha Palomäki Правильно: Встановлення останньої версії SSDT вирішило проблему. Зараз все краще.
Антуан Мельцхайм

4
Здається, існує деяке обмеження щодо того, наскільки великі файли bacpac можна імпортувати за допомогою студії управління. Якщо ви потрапили на виняток OutOfMemory, перевірте відповідь Flea про те, як використовувати інструмент командного рядка SqlPackage.exe
Juha Palomäki

52

Мені потрібно було експортувати базу даних SQL Azure, а потім імпортувати її на локальний сервер SQL 2008 R2 (Примітка, я також використовую Visual Studio 2010). Microsoft, безумовно, пішла з шляху, щоб зробити це болючим завданням, однак я зміг це зробити, зробивши наступне:

  1. Перейдіть за цим посиланням http://msdn.microsoft.com/en-us/jj650014 та встановіть Інструменти даних SQL Server для Visual Studio 2010

  2. Це встановиться на локальному диску. У моєму випадку ось, де він це помістив: C: \ Program Files (x86) \ Microsoft SQL Server \ 110 \ DAC \ bin

  3. Перейдіть до цього через командний рядок або панель повноважень

  4. Ви хочете виконати SqlPackage.exe

  5. Відкрийте це посилання, щоб побачити список усіх параметрів параметрів для SqlPackage.exe ( http://msdn.microsoft.com/en-us/library/hh550080(v=vs.103).aspx )

  6. Ось мій командний рядок, який мені потрібно було виконати, щоб імпортувати файл .bacpac на мій локальний сервер SQL 2008 R2:

    . \ SqlPackage.exe / a: Імпорт /sf:C:\mydatabasefile.bacpac / tdn: NorthWind / tsn: BINGBONG

/tdn- це ім'я бази даних, до якої потрібно відновити файл bacpac. /tsn- це ім'я вашого SQL-сервера.

Всі ці описи параметрів ви можете побачити за посиланням з №5.


Це можна зробити ще простіше, якщо у вас встановлений SSMS 2012. Ви можете просто використовувати майстра, як описано вище @Josiah, навіть із сервером R2 2008 року.
DanO

2
Я витратив стільки часу на пошуки цього рішення, що мені вдалося завантажити всю студію управління 2014 року.
Сантос

SqlPackage висів для мене на кроці "оновлення бази даних", поки я повністю не скинув цільову базу даних
michael_hook

10

Ви можете відновити BACPAC, використовуючи інструменти на стороні клієнта. Відео тут:

http://dacguy.wordpress.com/2011/09/09/importexport-services/

Інструменти доступні тут:

http://sqldacexamples.codeplex.com/documentation


Цей інструмент повинен підтримувати імпорт bacpac у локальну базу даних. Наприклад, імпорт bacpac до бази даних за допомогою Windows Auth виглядав би так: "DacCli -S myserver -E -D nw_restored -F northwind.bacpac -I". Однак список необхідних збірок кодексу є застарілим - жодне з посилань не працює, тому інструмент не запуститься (він є необхідною умовою для деяких компонентів CTP SQL 2012).
Давид Айрапетян

У мене були встановлені всі компоненти на моїй машині, тому я спробував імпортувати бакпак з DacCli - він працював (див. Командний рядок у моєму попередньому коментарі). Потрібно було близько 20 хвилин на 100 Мбайт бакпа.
Давид Айрапетян

7

Здається, на мої молитви відповідали. Redgate запустив свій інструмент резервного копіювання SQL Azure БЕЗКОШТОВНО - http://www.red-gate.com/products/dba/sql-azure-backup/download


Декілька питань: 1. Активна розробка резервної копії SQL Azure наразі зупинена (ця примітка відображається під час запуску останньої версії інструменту) 2. Під час резервного копіювання безпосередньо з Azure в локальний SQL він, схоже, не проходить повз bacpac, але натомість реалізує якусь домашню схему / копію даних. На мій досвід, це пройшло дуже повільно. 3. Щоб побудувати на попередній точці, механізм баггі - у мене було декілька таблиць, які не вдалося перенести, оскільки інструмент не міг виявити унікальний ключ
Девід Ейрапетян

2
Цю відповідь слід оновити, або вже не бути прийнятою відповіддю. Зв'язаний інструмент з тих пір став "хмарним" рішенням і не підтримує локальне резервне копіювання.
Тимофій Стримп

2
Інструмент резервного копіювання все ще доступний на сайті red-gate.com/products/dba/sql-azure-backup/Discontinued
Бен Фостер

5

Якщо ви використовуєте SSMS 2012, це так само просто, як клацнути правою кнопкою миші на папці Бази даних на сервері в Провіднику об’єктів і вибрати "Імпорт додатка рівня даних ...".

На шляху слід спостерігати одну проблему: станом на 26 березня 2013 року (коли мені потрібно було дізнатися, як це зробити самостійно), коли ви експортуєте .bacpac з Azure, він буде завантажений у форматі .zip, не є файлом .bacpac, а діалогове вікно файлу, яке відкриється кнопкою «Огляд» у майстрі імпорту, відображатиме лише * .bacpac або . у файлових фільтрах, маючи на увазі, що .zip не підтримується. Однак якщо ви зміните фільтр на . , виберіть завантажений файл .zip та натисніть кнопку Далі, майстер продовжиться нормально.


2
Це правильна відповідь. Тепер ви можете встановити безкоштовну автономну версію SSMS 2016, і вона надає всі ці функції
Aaron

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