Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql SSDT跳过比较和发布中的NOCHECK约束_Sql_Sql Server_Sql Server Data Tools_Dac - Fatal编程技术网

Sql SSDT跳过比较和发布中的NOCHECK约束

Sql SSDT跳过比较和发布中的NOCHECK约束,sql,sql-server,sql-server-data-tools,dac,Sql,Sql Server,Sql Server Data Tools,Dac,出于某种原因,当使用SSDT比较或修改表外键时,软件不会更改外键上设置的NOCHECK约束 这是表外键的脚本设置: 表: DBSchema: 所以,这些是不同的设置,但是SSDT完全忽略了它们。比较结果显示两者完全相同 在我的发布配置文件中,我未选中“忽略,不检查检查约束” 我还未选中“忽略外键而不检查外键”。因此,它们都应该被评估 谁能在自己的桌子上试试这个吗?只需将数据库中的CHECK更改为NOCHECK,并在其上运行SSDT,以查看SSDT是否修复了差异 我试了又试,SSDT一直在绕过差异

出于某种原因,当使用SSDT比较或修改表外键时,软件不会更改外键上设置的NOCHECK约束

这是表外键的脚本设置:

表: DBSchema: 所以,这些是不同的设置,但是SSDT完全忽略了它们。比较结果显示两者完全相同

在我的发布配置文件中,我未选中“忽略,不检查检查约束” 我还未选中“忽略外键而不检查外键”。因此,它们都应该被评估

谁能在自己的桌子上试试这个吗?只需将数据库中的CHECK更改为NOCHECK,并在其上运行SSDT,以查看SSDT是否修复了差异

我试了又试,SSDT一直在绕过差异


谢谢

这两种设置之间的唯一区别在于是否检查了表中的现有数据。在这两种情况下,约束都存在并启用了检查——因此模式是相同的——尽管数据的一致性可能不一致,因为在第一个示例中,预先存在的数据可能违反了约束。

否,实际上它在数据库表标记中使用NOCHECK。您可以自己在有ssdt设置的db表中进行尝试。将db table列键设置为WITH NOCHECK,并查看SSDT是否在发布时回滚该键。我已经在许多数据库中多次尝试过这种方法。您可以更改db table列中的设置并运行SSDT publish,但SSDT只是完全忽略了差异。试试看。你语句的第二部分,
ALTER TABLE[dbo].[SurveyQuestion]CHECK CONSTRAINT[FK\u SurveyQuestion\u Language]
将再次启用检查,不管你是使用CHECK还是使用NOCHECK创建约束
,是的,我明白你的意思,这是一个事件的指示器,数据多于模式。我的观点是,如果我更改设置,SSDT应该将项目模式同步到数据库表模式,但它没有。SSDT说这两个表是相同的,但它们不是。这是一个缺陷。我还在RedGate模式比较中运行了相同的比较,RedGate按预期报告了差异。这是数据库表中唯一的区别是NOCHECK。微软说他们是一样的,但Redgate说不一样。这似乎是Microsoft的一个缺陷,或者是我错过了某个地方的设置。
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]
CONSTRAINT [FK_SurveyQuestion_Language] FOREIGN KEY ([LanguageID]) REFERENCES [dbo].[Language] ([ID])