В настоящее время мы используем Visual Studio 2010 и у нас есть проект базы данных, который содержит все наши объекты базы данных.Обычно мы разворачиваем базу данных через скрипт сборки в наших средах CI, QA и UAT.Для производства мы создаем сценарий и предоставляем его нашему администратору базы данных для развертывания.
Мы заметили, что при развертывании нашей производственной базы данных требуется удалить большое количество ограничений внешнего ключа и воссоздать их с * 1003.* NOCHECK .
Когда мы создаем наши внешние ключи, мы не определяем CHECK или NOCHECK .Ниже приведен пример одного из наших ключей:
ALTER TABLE [dbo].[Table1]
ADD CONSTRAINT [FK_Table1_Table2_Field1]
FOREIGN KEY ([Field1])
REFERENCES dbo.[Table2] ([Field1])
Когда мы нацеливаем наш проект базы данных на наши среды CI, QA и UAT, он хочет создать ограничение с помощью " CHECK ",Он берет приведенный выше скрипт и пытается развернуть:
ALTER TABLE [dbo].[Table1] WITH CHECK
ADD CONSTRAINT [FK_Table1_Table2_Field1]
FOREIGN KEY ([Field1])
REFERENCES dbo.[Table2] ([Field1])
Когда мы нацеливаем наш проект базы данных на нашу производственную среду, он хочет создать ограничение с помощью « NOCHECK ».Он берет приведенный выше скрипт и пытается развернуть:
ALTER TABLE [dbo].[Table1] WITH NOCHECK
ADD CONSTRAINT [FK_Table1_Table2_Field1]
FOREIGN KEY ([Field1])
REFERENCES dbo.[Table2] ([Field1])
Есть ли в моем проекте базы данных параметр, вызывающий это?Есть ли в базе данных параметр, который устанавливает значение по умолчанию, поскольку мы не предоставляем его в нашем сценарии?