我试图build立一个导入forms的实时数据库到我们的开发数据库。
我试图用SSIS来做这个,但是由于约束导入失败。
例如,我有以下表格:
导入客户和产品是好的,因为他们不依赖于任何东西。 但是,当导入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将不检查数据和不信任数据
按以下顺序导入
一个表中的外键是另一个表中的主键。 示例:尝试插入OrderLines而不使用订单(订单号),产品(产品编号)将不起作用。
你也可以关注@Nick Kavadias的想法,但这可能会导致商业规则的消失(尽pipe它可以被捕获,当你试图重新启用约束)有孤立的logging。