我正在使用 Visual Studio 2012,其中包含一个 SQL 数据库项目并针对该数据库运行数据库分析,并且它引发以下警告:
带支票 |现有数据检查强制的 NOCHECK 选项被忽略。
我对错误的理解是,当脚本运行时,现有数据的 CHECK
和 NOCHECK
约束将被忽略(在每种情况下,对我来说,它是一个ALTER TABLE
)。
我的问题是,为什么检查约束会被忽略?
警告 ID 号
警告 ID 似乎已更改,因此我将两者都包含在下面,以便将来可以轻松搜索。
在 Visual Studio 2010 中,警告 ID 为:SQL03159
在 Visual Studio 2012 中,警告 ID 为:SQL70588
相关信息
ALTER TABLE [dbo].[MyTable] CHECK CONSTRAINT [FK_MyTable_SomeCol]
最佳答案
就我而言,这发生在我导入的脚本中,该脚本的结构如下:
CREATE TABLE [dbo].[ELMAH_Error]
(
[ErrorId] UNIQUEIDENTIFIER NOT NULL,
)
GO
ALTER TABLE [dbo].[ELMAH_Error] WITH NOCHECK ADD
CONSTRAINT [PK_ELMAH_Error] PRIMARY KEY NONCLUSTERED ([ErrorId]) ON [PRIMARY]
GO
当我查看上面的代码时,WITH NOCHECK
看起来多余,因为该表应该刚刚创建,因此是空的。所以我怀疑这个代码分析警告指出了这种冗余。
关于sql-server - 带支票|忽略现有数据检查强制的 NOCHECK 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14558263/