2017-01-13 26 views
1

Я создаю свой проект базы данных в CI, используя devenv.exe. Все флажки «Развернуть» в ConfigurationManager отключены. Для DeployToDatabase в файле sqlproj установлено значение False. Я использую devenv.exe какКак избежать проверок проекта .dacpac в CI?

devenv.exe "PathToSln\MySln.sln" /build /Release /Out "LogFile.log" 

И на каждую сборку я получаю сообщение об ошибке: «Система-версионную токе и таблица истории не имеет совпадающие схемы.» Я знаю, что означает эта ошибка, и я должен жить с ней прямо сейчас. Итак, вопросы: как удалить проверку схемы в файле devenv.exe через командную строку?

+0

Можете ли вы удалить проверку схемы вообще? Возможно ли это с помощью пользовательского интерфейса (я думаю, что это не так). Если бы это было так, то это скорее скорее файл конфигурации, чем коммутатор командной строки. – paulbarbin

+0

@paulbarbin, у меня нет идей, как отключить его. На странице https://msdn.microsoft.com/en-us/library/hh272681(v=vs.103).aspx#bkmk_evf msdn рекомендуется отключить расширенную проверку, но я не вижу таких параметров в VS. – Oxoron

ответ

1

Проекты базы данных всегда проверяют схему до создания файла dacpac. Альтернативы этому нет. Кроме того, проверка схемы не связана с развертыванием - она ​​проверяет, является ли база данных, определенная проектом, внутренне непротиворечивой.

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

  • Версия SSDT установлен на машине старый и есть ошибка, которая вызывает эту ошибку, чтобы это произошло в большинстве определений временных таблиц. Убедитесь, что ваш аппарат имеет самую последнюю версию SSDT.

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

  • Вы сталкиваетесь с ошибкой со временными таблицами, которые еще не исправлены. Это может произойти с неявными определениями таблицы истории. Либо переключитесь на явно определенные таблицы истории, либо обойдите проблему, закрыв VS и удалив автоматически сгенерированный файл кэша DBMDL, который находится на диске рядом с файлом sqlproj.

+0

thx много для ваших идей и вашего времени. К сожалению, я неявно определил историческую таблицу, и DBMDL создается еще раз на каждой сборке. Кроме того, должен быть способ не проверять db, потому что сборка на локальной машине идет правильно. – Oxoron

+1

Я бы предложил переключиться на явно определенные таблицы истории, пока ошибка в SSDT не будет исправлена. Microsoft не представит способ создания проекта без проверки структуры базы данных. –

+0

Я установил удаление силы DBMDL-файла, и теперь он работает. @Steven thx много для вашей помощи. – Oxoron

0

Пользовательские определения сборки должны исправить это. Вместо создания для/Release вы можете создать определение сборки, которое называется CI_Build, и только создать проект кода и пропустить проект базы данных.

Если вы еще не создали пользовательские определения сборки, в раскрывающемся списке, где вы выбираете Debug или Release, вы можете выбрать «Configuration Manager», а оттуда вы можете отключить сборку или проект базы данных (снимите флажок соответствующий столбцу Build) или создать пользовательскую сборку, выбрав «» из раскрывающегося списка «Active solution». Затем создайте новый и настройте то, что строит и что пропускается соответственно.

+0

К сожалению, мне нужен файл .dacpac, поэтому я не могу пропустить сборку проекта. Но я уверен, что можно избежать проверки схемы и развертывания - просто потому, что я не получаю такую ​​же ошибку локально. – Oxoron