如何在使用外键约束时使用SQL Server SSIS导入数据?

我试图build立一个导入forms的实时数据库到我们的开发数据库。

我试图用SSIS来做这个,但是由于约束导入失败。

例如,我有以下表格:

  • 顾客
  • 制品
  • OrderLines
  • 命令

导入客户和产品是好的,因为他们不依赖于任何东西。 但是,当导入OrderLines时,它会失败,因为订单尚未创build。

如何更改SSIS如何导入表的顺序?

或者,也许我不应该使用外键约束?

在数据导入之前禁用或删除外键约束,然后在导入之后启用或添加外键约束。 删除/添加

--drop alter table t1 DROP CONSTRAINT fk_1 --add alter table t1 WITH CHECK add constraint fk_1 foreign key (fk) references t2 (i) 

禁用启用

 --disable alter table t1 NOCHECK CONSTRAINT fk_1 --enable alter table t1 WITH CHECK CHECK CONSTRAINT fk_1 

WITH CHECK很重要,否则SQL Server将不检查数据和不信任数据

  1. 按以下顺序导入

    1. 顾客
    2. 制品
    3. 命令
    4. OrderLines

一个表中的外键是另一个表中的主键。 示例:尝试插入OrderLines而不使用订单(订单号),产品(产品编号)将不起作用。

你也可以关注@Nick Kavadias的想法,但这可能会导致商业规则的消失(尽pipe它可以被捕获,当你试图重新启用约束)有孤立的logging。