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

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

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

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

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

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

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

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

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

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

Любые идеи?

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


person Matt Winward    schedule 25.06.2014    source источник


Ответы (1)


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

person Kevin Cunnane    schedule 25.06.2014
comment
Спасибо Кевин - это именно то, на что это похоже. - person Matt Winward; 30.06.2014