Может ли приложение уровня данных сосуществовать с управляемой вручную базой данных?

У нас есть большая производственная база данных, в которой используется настраиваемый контроль версий, позволяющий плавно обновляться при изменении схемы (каждый сценарий изменения имеет версию). Все работает хорошо.

Можем ли мы использовать модель прикладного программирования уровня данных параллельно с существующей базой данных? Мы хотели бы попробовать подход DAC без преобразования нашей базы данных в приложение уровня данных. Было бы идеально отделить приложение уровня данных от остальной части базы данных на уровне схемы. Допустим, у нас есть три схемы: dbo, my и dac. Мы хотели бы продолжать управлять dbo и my вручную и использовать dacpacs для автоматической миграции всего в схеме dac.

Мы провели несколько тестов, и кажется, что Data-Tier Application Framework не любит конкуренции — он определяет объекты вне своей области действия как «ручные изменения» и пытается удалить их при импорте. Есть ли способ изменить это поведение?


person David Airapetyan    schedule 07.04.2014    source источник


Ответы (1)


Ответ здесь «более или менее, но с некоторой работой». В идеале структура DAC предназначена для моделирования всей базы данных, но ее можно настроить несколькими способами, чтобы преодолеть это.

  • Один из способов — убедиться, что для параметра «отбрасывать объекты не в исходном коде» установлено значение false в любой конфигурации публикации. Это находится в расширенных настройках публикации и может быть настроено в командной строке и т. д. Недостатком этого является то, что при удалении объекта в схеме dac он не будет удален в

  • Для более полного решения вам потребуется использовать участника развертывания для фильтрации любых шагов, связанных со схемами, отличными от «dac». Отправной точкой является «Решение 2. Фильтрация во время развертывания» в руководство по DacFx, которое я написал (исходный код здесь). Здесь показано, как отфильтровать шаги создания — на самом деле вы хотели бы расширить это, чтобы удалить шаги. Преимущество заключается в большем контроле и лучшем соответствии вашему решению, а недостатком является необходимость написать некоторый собственный код и включить его в вашу настройку.

Обратите внимание, что что бы вы ни делали, вы все равно обнаружите, что сравнение схем и другие инструменты показывают альтернативные схемы. Вы можете настроить сравнение схем, чтобы отфильтровать эти другие схемы и сохранить файл сравнения с этими настройками для использования в будущем.

Кроме того, вам нужно соблюдать дисциплину, чтобы не иметь ссылок на другие управляемые вручную схемы из схемы dac. Существует поддержка написания пользовательских правил анализа кода для обеспечения соблюдения этого, или вы можете просто применить его с помощью проверки кода и т. д.

person Kevin Cunnane    schedule 22.04.2014