C# sql bulkcopy删除并重新添加外键

C# sql bulkcopy删除并重新添加外键,c#,sql,sql-server,C#,Sql,Sql Server,我有一个脚本,它生成add语句来添加(在我的例子中是重新添加)外键 我运行这个脚本并获取语句。在此之后,我运行一个脚本,该脚本将删除外键 完成后,我想运行addforeignkeys语句来重新添加它们 当我按照上面描述的顺序运行脚本时,它就工作了!一旦外键被删除,我就可以运行add语句,并按预期添加所有内容 但是,在我抓取add语句并删除外键之后,我想截断表并执行一个大容量复制,然后重新添加外键。但这样做失败了 添加外键时出现的错误如下: System.Data.dll中发生了类型为“Syste

我有一个脚本,它生成add语句来添加(在我的例子中是重新添加)外键

我运行这个脚本并获取语句。在此之后,我运行一个脚本,该脚本将删除外键

完成后,我想运行addforeignkeys语句来重新添加它们

当我按照上面描述的顺序运行脚本时,它就工作了!一旦外键被删除,我就可以运行add语句,并按预期添加所有内容

但是,在我抓取add语句并删除外键之后,我想截断表并执行一个大容量复制,然后重新添加外键。但这样做失败了

添加外键时出现的错误如下:

System.Data.dll中发生了类型为“System.Data.SqlClient.SqlException”的第一次意外异常

其他信息:ALTER TABLE语句与外键约束“FK\U Order\U Details\U Orders”冲突。冲突发生在数据库“Northwind2”、表“dbo.Orders”、列“OrderID”中

我的READD语句如下所示:

USE Northwind2;

ALTER TABLE [dbo].[Products] WITH CHECK 
  ADD CONSTRAINT [FK_Products_Categories] 
  FOREIGN KEY([CategoryID]) REFERENCES [dbo].[Categories] ([CategoryID])

ALTER TABLE [dbo].[Products] CHECK CONSTRAINT [FK_Products_Categories]

ALTER TABLE [dbo].[Orders]  WITH CHECK 
   ADD CONSTRAINT [FK_Orders_Customers] 
   FOREIGN KEY([CustomerID]) REFERENCES [dbo].[Customers] ([CustomerID])

ALTER TABLE [dbo].[Orders] CHECK CONSTRAINT [FK_Orders_Customers]

ALTER TABLE [dbo].[CustomerCustomerDemo] WITH CHECK 
  ADD CONSTRAINT [FK_CustomerCustomerDemo_Customers] 
  FOREIGN KEY([CustomerID]) REFERENCES [dbo].[Customers] ([CustomerID])

ALTER TABLE [dbo].[CustomerCustomerDemo] CHECK CONSTRAINT [FK_CustomerCustomerDemo_Customers]

(and so on and so forth......)
为什么会失败?还有,为什么它在那个特定点上失败了?如果在异常发生后查看数据库,可以看到添加了其他外键。有办法解决这个问题吗?
任何帮助都将不胜感激

您至少有一条孤立记录。你需要在NOCHECK中使用
,或者修复你的数据。是的,@ConradFrix说,你没有彻底清理你的数据,这会在事后导致完整性问题。如果删除由另一个表中的行引用的值,请不要删除引用行,然后尝试使用CHECK重新应用约束
(正如您所做的那样),您将遇到此类冲突。谢谢:)现在有意义了