Обновление базы данных SQL Azure из производственной среды

Ищем лучшие практики по обновлению QA / Test базы данных SQL Azure из производственной базы данных Azure SQL

Производственная база данных находится на другом сервере и в другой группе ресурсов. Так что просто интересно, как лучше всего загрузить производственные данные в базу данных qa / testing. Какие инструменты доступны для такой задачи?


person 77Vetter    schedule 29.05.2018    source источник


Ответы (2)


Наиболее распространенный формат базы данных SQL Azure - bacpac, и поверьте мне, когда я скажу вам, что это УДИВИТЕЛЬНО.

Экспорт

Самый простой способ сделать это - использовать Портал Azure или с SSMS.

Однако это скопирует всю схему базы данных и все данные. Если вам нужно что-то более конкретное, например, исключение таблицы, не ищите ничего, кроме sqlpackage.exe.

.\sqlpackage.exe /Action:Export /ssn:SERVER /sdn:ADB /tf:"C:\PATH\TO\FILE.bacpac" /of /p:TableData=TABLE /p:TableData=TABLE /p:TableData=TABLE

Импорт

Чтобы создать базу данных из .bacpac, созданного вами выше, все три вышеупомянутых метода также поддерживают импорт.

Рекомендации

Я бы применил здесь принцип KISS и просто использовал портал / SSMS на обоих концах. Удаление определенных таблиц, которые вам больше не нужны / не нужны.

person pim    schedule 31.05.2018
comment
В итоге я использовал инструменты для обработки данных в Visual Studio и создавал подключения как к производственному, так и к QA-серверу Azure Sql. Затем, когда соединения были установлены, я мог щелкнуть правой кнопкой мыши и выбрать приложение уровня данных для производства в базе данных. Оттуда я мог выбрать / исключить таблицы, и он создал файл dacpac. Затем в базе данных QA я мог щелкнуть правой кнопкой мыши и выбрать «Опубликовать приложение уровня данных», и оно ввело данные. Это также можно сделать через SSMS, но VS делает это довольно просто. Спасибо, что направили меня в правильном направлении! - person 77Vetter; 31.05.2018
comment
Без проблем! Dacpac проверены и верны. Я рада, что у вас все получилось! - person pim; 31.05.2018

Вам просто нужно скопировать производственную базу данных с помощью портала или PowerShell.

New-AzureRmSqlDatabaseCopy -ResourceGroupName "myResourceGroup" `
    -ServerName $sourceserver `
    -DatabaseName "MySampleDatabase" `
    -CopyResourceGroupName "myResourceGroup" `
    -CopyServerName $targetserver `
    -CopyDatabaseName "CopyOfMySampleDatabase"

Вы также можете автоматизировать обновление базы данных разработки, воссоздав ее с помощью службы автоматизации Azure и следующего оператора T-SQL.

CREATE DATABASE db_copy   
    AS COPY OF ozabzw7545.db_original ( SERVICE_OBJECTIVE = 'P2' );
person Alberto Morillo    schedule 29.05.2018
comment
Есть ли способ исключить таблицу? у нас есть таблица аудита со 150 миллионами строк, которые мы не хотим / не нуждаемся в обновлении? Кроме того, я попытался запустить New-AzureRmSqlDatabaseCopy из CloudShell, но он все время выдает ошибку о том, что ресурс не может быть найден. У меня есть точный ресурс из исходной базы данных (скопированный / вставленный), поэтому я не уверен, почему он говорит, что не может найти ресурс? - person 77Vetter; 30.05.2018
comment
Я вижу ресурсы только из нашей производственной подписки, поэтому их ресурс не может быть найден. Я попытался переключить подписку, используя: az account set --subscription ‹name›, но, похоже, это не имеет никакого значения, я все еще получаю только производственные ресурсы. - person 77Vetter; 30.05.2018
comment
Вместо этого используйте оператор CREATE DATABASE. Если вам не нужна таблица со 150 миллионами строк, обрежьте ее после копирования базы данных. Все это можно автоматизировать с помощью службы автоматизации Azure. docs.microsoft.com/en-us/ лазурный / автоматизация / - person Alberto Morillo; 01.06.2018
comment
gallery.technet.microsoft.com/scriptcenter/ - person Alberto Morillo; 01.06.2018
comment
@AlbertoMorillo, как это делается? мы используем создать базу данных как копию команды, но хотим пропустить две таблицы - person TWilly; 11.02.2021
comment
@TWilly CREATE DATABASE ... AS COPY OF не позволяет исключать таблицы. Вам придется отбросить их после того, как будет завершен результат копирования базы данных. Если эти 2 таблицы большие, вы также можете захотеть освободить место (SHRINK) - person Alberto Morillo; 12.02.2021