Почему мой сценарий обновления проекта базы данных включает рефакторинг из ссылочных проектов базы данных?

#sql #database-project #sql-server-data-tools #sqlpackage

#sql #база данных-проект #sql-server-data-tools #пакет sqlpackage

Вопрос:

Надеюсь, это будет иметь какой-то смысл..

У нас есть куча проектов баз данных, которые мы используем для поддержки схемы и создания сценариев обновления. Для генерации сценариев обновления мы используем механизм автоматической сборки, который использует SqlPackage.exe сравнить проект базы данных с «шаблоном схемы», который является копией действующей базы данных, но без данных.

Одна из этих баз данных содержит ссылки на три других проекта базы данных.

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

Итак, сценарий обновления включает в себя две партии SQL:

  1. В начале печатаются инструкции, в которых говорится, что объект схемы не будет переименован.
  2. Куча инструкций insert в __RefactorLog .

Проблема двоякая:

  1. Эти рефакторинги не должны включаться в этот сценарий обновления; они принадлежат одному из ссылочных проектов базы данных — они не имеют ничего общего с этим.
  2. Поскольку эта база данных не требует рефакторинга, в ней нет таблицы с именем __RefactorLog, поскольку сценарию обновления не нужно ее создавать. Это приводит к сбою сборки.

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

Есть какие-нибудь идеи?

ОБНОВЛЕНИЕ — Отсутствующая таблица __RefactorLog была отвлекающим маневром. По какой-то причине он был включен в шаблон схемы, но отсутствовал в живой базе данных, поэтому SqlPackage предположил, что его не нужно создавать. Тем не менее, я все равно хотел бы знать, почему весь рефакторинг из ссылочного проекта базы данных включен в проблемный.

Ответ №1:

Это ошибка в SSDT — есть ошибка подключения, отслеживающая это. Обратите внимание, что для ссылок на «Ту же базу данных» ожидается включение журнала рефакторинга. Это потому, что все объекты будут помещены в одну базу данных. Ошибка заключается в том, что неправильно включен журнал рефакторинга для ссылок на «Разные базы данных», с чем, я предполагаю, вы столкнулись.

Комментарии:

1. Спасибо, Кевин, это именно то, на что это похоже.