Может ли приложение уровня данных сосуществовать с управляемой вручную базой данных?
У нас есть большая производственная база данных, в которой используется настраиваемый элемент управления версиями, который позволяет выполнять плавные обновления при изменении схемы (каждый сценарий изменения имеет версию). Все работает хорошо
Можем ли мы использовать модель прикладного программирования уровня данных бок о бок в существующей базе данных? Мы хотели бы попробовать подход DAC без преобразования нашей базы данных в приложение уровня данных. Было бы идеально отделить приложение уровня данных от остальной базы данных на уровне схемы. Допустим, у нас есть три схемы: dbo, my и dac. Мы хотели бы продолжить управлять dbo и my вручную и использовать dacpacs для автоматической миграции всего в схеме dac.
Мы перепробовали несколько тестов, и кажется, что Data-Tier Application Framework не любит конкуренцию - он обнаруживает объекты вне своей области видимости как "ручные изменения" и пытается отбросить их при импорте. Есть ли способ изменить это поведение?
1 ответ
Ответ здесь "более или менее, но с некоторой работой". В идеале структура DAC предназначена для моделирования всей базы данных, но может быть настроена несколькими способами, чтобы преодолеть это.
Одним из способов является обеспечение того, что для "отбрасывать объекты, не входящие в источник", установлено значение false в любой конфигурации публикации. Это в расширенных параметрах публикации, которые можно настроить в командной строке и т. Д. Недостатком этого является то, что при удалении объекта в схеме DAC он не будет удален в
Для более полного решения вам потребуется использовать вкладчик развертывания, чтобы отфильтровать все шаги, относящиеся к схемам, отличным от "dac". Отправной точкой является "Решение 2: Фильтрация во время развертывания" в учебнике по DacFx, который я написал (исходный код здесь). Здесь показано, как отфильтровать шаги "Создать" - вам бы тоже хотелось расширить это, чтобы пропустить шаги. Преимущество - больший контроль и лучшее соответствие вашему решению. Недостатком является необходимость написания некоторого пользовательского кода и включения его в свои настройки.
Обратите внимание, что что бы вы ни делали, вы все равно найдете это сравнение схем, а другие инструменты покажут альтернативные схемы. Вы можете настроить сравнение схем, чтобы отфильтровать эти другие схемы и сохранить файл сравнения с этими настройками для использования в будущем.
Кроме того, вам нужно быть дисциплинированным из-за отсутствия ссылок на другие, управляемые вручную схемы из схемы dac. Существует поддержка для написания пользовательских правил анализа кода, чтобы обеспечить это, или вы могли бы просто применить его через проверки кода и т. Д.