Это хорошо известно, что создание bacpac в SQL Azure не гарантирует согласованности транзакций при экспорте действующей изменяющейся базы данных.
Принятый обходной путь — сначала создать моментальный снимок базы данных, скопировав его, а затем выполнив экспорт.
Такой подход довольно нелеп, потому что заставляет пользователей тратить дополнительные деньги на хранение реляционных БД. На самом деле, в прежние времена SQL Azure счета за базы данных выставлялись по дням, поэтому создание ежедневных бакпаков из производственных баз данных, по сути, удваивало затраты (сейчас, если я не ошибаюсь, выставляются почасовые счета).
Впрочем, мой вопрос не об этом. Мой вопрос заключается в следующем: если для меня приемлемо иметь транзакционно несогласованный bacpac, есть ли способ его фактического восстановления (т.е. импорта)? Проблема проста — из-за того, что некоторые ограничения больше не выполняются, импорт завершается неудачей (скажем, с исключением FK). Хотя восстановление bacpac представляет собой не что иное, как повторное создание БД из схемы с последующим массовым импортом, весь процесс полностью непрозрачен, и пользователю предоставляется мало контроля. Однако, поскольку инструменты Azure SQL постоянно находятся в движении, я не удивлюсь, если это станет возможным.
Итак, резюмируя, вопрос: учитывая потенциально несогласованный bacpac (т. е. некоторые константы не будут выполняться), есть ли способ (без написания тонны кода) импортировать его в локальную базу данных? >