通过SSIS包将历史数据从数据库移动到另一个数据库

时间:2015-06-18 06:30:36

标签: sql-server

我有两个数据库,我想将一些历史数据从事实表移动到另一个数据库,目标表与源表完全相同,包括所有约束。

我使用SSIS包传输数据,如下所示:

  1. 首先使用OLE DB Source从源中选择所需时间段的数据。
  2. 使用OLE DB Destination将其加载到临时表到第二个数据库中。
  3. 然后使用执行SQL任务

    将其加载到最终表

    但我得到以下错误

  4.   

    错误:违反PRIMARY KEY约束   ' PK__Financia__362B520524BEA57A&#39 ;.无法插入重复键   对象' Fact.FinancialTransactions'。重复的键值是   (100001,2010012,2010年12月31日12:00 AM,65,88)。

    如何解决此问题?我想将约束保留在目标表中。

1 个答案:

答案 0 :(得分:0)

您可能希望再添加一个执行SQL任务,该任务会在一段时间内禁用约束。但问题是如果禁用主键,则无法对表执行任何操作,因此也可以选择删除,但重新创建再次需要时间。所以最好的选择是修复错误或通过下面的

重建你的索引
  

ALTER TABLE t1 REBUILD WITH(IGNORE_DUP_KEY = ON)

这将允许忽略重复项。更多信息在这里。Can I set ignore_dup_key on for a primary key?