我尝试过从MySQL到MS SQL Server的增量加载的不同方法。但发现以下方法最优:
从目标表获取max(UpdateDate)并读取所有具有UpdateDate>的记录目标表的max(UpdateDate)。 (执行SQL任务以从目标表获取最大日期。存储在变量中)
将这些行加载到临时表中。
使用目标表查找此临时表以查找新记录和已更改记录。
将目标表格保存。
但我正面临这种方法的问题。 SSIS包失败,出现以下错误:
“[SSIS.Pipeline]错误:SSIS错误代码DTS_E_PRIMEOUTPUTFAILED。 ADO NET Source上的PrimeOutput方法返回错误代码0xC02090F5。 当管道引擎调用时,组件返回失败代码 PrimeOutput()。失败代码的含义由 组件,但错误是致命的,管道停止执行。 在此之前可能会发布错误消息以获取更多信息 关于失败。“
我删除了查找转换并将数据直接加载到目标表中,但它工作正常,但它插入了源表中的所有记录。它应该插入UpdateDate>的记录。目标表的最大值(UpdateDate)。
请建议。
谢谢!
答案 0 :(得分:1)
不是在SSIS中执行查找,而是将第2步数据加载到目标服务器上的永久临时表中。然后步骤3&将在存储过程而不是数据流中执行图4的处理。它会更快,更不容易出错。