【问题标题】:Incremental Load from MySQL to MS SQL Server从 MySQL 到 MS SQL Server 的增量负载
【发布时间】:2017-08-10 20:52:13
【问题描述】:

我尝试了不同的方法来实现从 MySQL 到 MS SQL Server 的增量加载。但发现以下方法最佳:

  1. 从目标表中获取 max(UpdateDate) 并读取目标表中所有 UpdateDate > max(UpdateDate) 的记录。 (执行 SQL 任务以从目标表中获取最大日期。存储在变量中)

  2. 将这些行加载到临时表中。

  3. 使用目标表查找此临时表以查找新的和更改的记录。

  4. 更新目标表。

但是我在这种方法中遇到了问题。 SSIS 包失败并出现以下错误:

"[SSIS.Pipeline] 错误:SSIS 错误代码 DTS_E_PRIMEOUTPUTFAILED。 ADO NET 源上的 PrimeOutput 方法返回错误代码 0xC02090F5。 管道引擎调用时组件返回失败代码 素数输出()。故障代码的含义由 组件,但错误是致命的并且管道停止执行。 在此之前可能会发布带有更多信息的错误消息 关于失败。”

我删除了查找转换并将数据直接加载到目标表中,它工作正常,但它插入了源表中的所有记录。它应该已插入目标表的 UpdateDate > max(UpdateDate) 的记录。

请提出建议。

谢谢!

【问题讨论】:

  • 您列出的错误不是确切的错误。可能还有一些错误。你能把它们也列出来吗?
  • 它说“ADO Net Source 无法处理数据。在读取数据时遇到致命错误”
  • 此错误指向“ADO.Net Source”组件。如果 SQL 有效并且执行没有错误,您能否查看发送到源的参数?

标签: mysql sql-server ssis


【解决方案1】:

不要在 SSIS 中进行查找,而是将步骤 2 的数据加载到目标服务器上的永久临时表中。然后步骤 3 和 4 将在存储过程而不是数据流中执行。它会更快,更不容易出错。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    • 1970-01-01
    • 2013-06-12
    • 2014-11-14
    • 2011-09-25
    • 1970-01-01
    相关资源
    最近更新 更多