SSDT пропускает ограничение NOCHECK при сравнении и публикации - PullRequest
0 голосов
/ 13 мая 2018

По какой-то причине при использовании SSDT для сравнения или изменения внешнего ключа таблицы программное обеспечение ничего не делает для изменения ограничения NOCHECK, установленного для внешнего ключа.

Это сценарий установки для внешнего ключа таблицы:

ТАБЛИЦА:

ALTER TABLE [dbo].[SurveyQuestion]  WITH NOCHECK ADD  CONSTRAINT [FK_SurveyQuestion_Language] FOREIGN KEY([LanguageID])
REFERENCES [dbo].[Language] ([ID])
GO

ALTER TABLE [dbo].[SurveyQuestion] CHECK CONSTRAINT [FK_SurveyQuestion_Language]

DBSchema:

CONSTRAINT [FK_SurveyQuestion_Language] FOREIGN KEY ([LanguageID]) REFERENCES [dbo].[Language] ([ID])

Итак, это разные настройки, но SSDT просто полностью их игнорирует. Сравнения возвращаются, показывая, что оба идентичны.

В моем профиле публикации я не проверял "игнорировать с помощью nocheck при проверке ограничений" Я также не проверял "игнорировать withnocheck на внешние ключи". Таким образом, они оба должны быть оценены.

Может кто-нибудь попробовать это в своей таблице? Просто измените ваш CHECK на NOCHECK в вашей базе данных и запустите SSDT, чтобы увидеть, исправит ли SSDT несоответствие.

Я пытался и пытался, и SSDT продолжает обходить несоответствие.

Спасибо

1 Ответ

0 голосов
/ 13 мая 2018

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

...