Експорт описан тут>>>, а в посте ниже – выполним импорт из .bacpac
в Azure SQL.
Сначала нам прислали файлы в *.bac
– пришлось просить пересохранить в *.bacpac
, т.к. устанавливать локальный MS SQL сервер для того, что бы восстановить из BAC и сохранить в BACPAC, который “понимает” SQL Azure – желания мало.
Находим файлы бекапов.
Логинимся:
$ azure login info: Executing command login \info: To sign in, use a web browser to open the page https://aka.ms/devicelogin.
Настраиваем подключение к Storage Account.
Меняем подписку:
$ azure account set e7aac243-***-***-***-c2493a6a3a7b info: Executing command account set info: Setting subscription to "App PII" with id "e7aac243-***-***-***-c2493a6a3a7b". info: Changes saved info: account set command OK
Получаем ключи:
$ azure storage account keys list storagename -g resourcegroupname info: Executing command storage account keys list + Getting storage account keys data: Primary: d1m***g== data: Secondary: Sco***Q==
Задаём переменные:
$ export AZURE_STORAGE_ACCOUNT=storagename $ export AZURE_STORAGE_ACCESS_KEY=d1m***g==
Проверяем Blob-контейнеры:
$ azure storage container list info: Executing command storage container list + Getting storage containers data: Name Public-Access Last-Modified data: -------------- ------------- ----------------------------- data: pii-service Blob Mon, 22 Aug 2016 14:25:25 GMT
И файл-шары:
$ azure storage share list info: Executing command storage share list + Getting storage shares data: Name Last-Modified data: ------- ----------------------------- data: backups Mon, 22 Aug 2016 10:27:25 GMT
В файлах имеется каталог backups
, в котором хранится несколько bacpac-файлов баз данных:
$ azure storage file list --share backups -p bacpac info: Executing command storage file list + Getting storage files under 'bacpac' of share backups data: Name Length Type data: -------------------------------------- ----------- ---- data: App_SessionState_LIVE.bacpac 9241 data: meister.bacpac 19469840081 data: meisterAustauschplattform.bacpac 1516302 data: meisterIntranet_STA.bacpac 7324255 data: meisterUSShop.bacpac 57184 data: meisterUSShop_STA.bacpac 58013 data: meister_STA.bacpac 5049777614 data: CloudPlatformUser_LIVE.bacpac 2845 data: CloudPlatformUser_STA.bacpac 21046 data: backup_200906240300.bacpac 130711867 data: [dbo].[sp_MSobjsearch] 15691
Azure SQL умеет выполнять импорт только из Blob-хранилища, поэтому – данные придётся перемещать.
Кроме AzCopy для Windows – ничего толковго не нашёл, потому – просто зальём базы на PC, а потом – обратно, но уже в Blob Storage:
$ azure storage file download --share backups -d . -p bacpac/App_SessionState_LIVE.bacpac info: Executing command storage file download + Download remote file 'bacpac/App_SessionState_LIVE.bacpac' from share backups to local path 'App_SessionState_LIVE.bacpac' Percentage: 0% (0B/0B) Average Speed: 0B/S Elapsed Time: 00:00:00 info: File saved as App_SessionState_LIVE.bacpac
Повторяем для остальных.
Загружаем bacpac обратно, но теперь в контейнер Blob-хранилища:
$ azure storage blob upload --container containername -f App_SessionState_LIVE.bacpac info: Executing command storage blob upload + Checking blob App_SessionState_LIVE.bacpac in container containername + Uploading App_SessionState_LIVE.bacpac to blob App_SessionState_LIVE.bacpac in container containername Percentage: 100.0% (9.02KB/9.02KB) Average Speed: 9.02KB/S Elapsed Time: 00:00:00 + Getting Storage blob information data: Property Value data: ------------- ---------------------------- data: container containername data: blob App_SessionState_LIVE.bacpac data: blobType BlockBlob data: contentLength 9241 data: contentType application/octet-stream data: contentMD5 yOCNeKYhHLbERoRHTH+ILQ== info: storage blob upload command OK
Повторяем для остальных.
Далее, т.к. для Linux утилит нет, а Azure CLI не поддерживает работу с Azure SQL (слов нет…) – то горестно вздыхаем, идём в Azure Portal.
В SQL servers и выбираем нужный сервер:
Жмём Import – и выбираем хранилище, контейнер и объект (bacpac-файл), из которого Azure SQL восстановит базу:
В поля Server admin login и Password – вносим существующего администратора сервера:
Запускаем, готово:
Увы – Azure SQL во время импорта не выводит никаких сообщений о прогрессе, поэтому при импорте базы в 18G – остаётся только ждать.