sql bulkcopy删除并重新添加外键

时间:2013-11-12 20:44:56

标签: c# sql sql-server

我有一个脚本生成add语句来添加(在我的情况下重新添加)外键。

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

完成后,我想运行add foreign keys语句来重新添加它们。

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

但是,在我获取add语句并删除外键之后,我想截断表并进行批量复制,然后重新添加外键。但这样做会失败。

我重新添加外键时遇到的错误如下:

  

System.Data.dll中出现'System.Data.SqlClient.SqlException'类型的第一次机会异常

     

附加信息:ALTER TABLE语句与FOREIGN KEY约束“FK_Order_Details_Orders”冲突。冲突发生在数据库“Northwind2”,表“dbo.Orders”,列'OrderID'。

我的重新添加语句如下所示:

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......)

为什么这会失败?另外,为什么它在那个特定点失败了?如果我在异常发生后查看数据库,我可以看到添加了其他外键。有没有解决的办法? 任何帮助将不胜感激!

0 个答案:

没有答案