sql-server – SQL Server检查/ NoCheck生成的脚本中的差异

我正在尝试将模式同步到不同的数据库之间.基本上,我运行任务 – >在两个数据库上使用sql Server Management Studio(2005)生成脚本,并将输出与diff工具进行比较.

由于某种原因,一个脚本会添加约束WITH CHECK和一个WITH NO CHECK,然后两个约束被重新启用.

我得到的第一个数据库

ALTER TABLE [dbo].[Profile]  WITH CHECK ADD  CONSTRAINT [FK_Profile_OrganizationID] FOREIGN KEY([OrganizationID])
REFERENCES [dbo].[Organization] ([OrganizationID])
GO
ALTER TABLE [dbo].[Profile] CHECK CONSTRAINT [FK_Profile_OrganizationID]
GO

第二个数据库生成

ALTER TABLE [dbo].[Profile]  WITH NOCHECK ADD  CONSTRAINT [FK_Profile_OrganizationID] FOREIGN KEY([OrganizationID])
REFERENCES [dbo].[Organization] ([OrganizationID])
GO
ALTER TABLE [dbo].[Profile] CHECK CONSTRAINT [FK_Profile_OrganizationID]
GO

所以我有两个问题:

>最终结果是一样的吗?
(编辑:
看来,很多人只是在这两个脚本的第一个声明中拿起来.我对整个脚本的最终结果感兴趣.)
>如果最终结果相同,为什么Management Studio会为不同的数据库生成不同的内容

解决方法

最终的结果是不一样的!

sql Server不会相信FK的唯一性是不被检查.这意味着如果您在查询中使用列,则需要进行其他处理.
长篇小说是,您应该让sql Server检查列,以便它被认为是可信的.

至于为什么它们与不同的服务器不同,请查看sys.foreign_keys中的isnottrusted列.这可能会影响SSMS的产生?

对于更多的这种情况,请查看my other answer与FK&无检查/检查选项.

相关文章

(一)日志传送架构 (1.1)相关服务器 主服务器 :用于生产的服务器,上面运行这生产SQL Server数据库...
(一)事故背景 最近在SQL Server 2012生产数据库上配置完事物复制(发布订阅)后,生产数据库业务出现了...
(一)测试目的 目前公司使用的SQL SERVER 2012高可用环境为主备模式,其中主库可执行读写操作,备库既...
(一)背景个人在使用sql server时,用到了sql server的发布订阅来做主从同步,类似MySQL的异步复制。在...
UNION和OR谓词 找出 product 和 product2 中售价高于 500 的商品的基本信息. select * from product wh...
datawhale组队学习task03