【问题标题】:Unable to transfer SQL Server varchar(max) to MySQL text using SSIS无法使用 SSIS 将 SQL Server varchar(max) 传输到 MySQL 文本
【发布时间】:2014-11-10 14:14:52
【问题描述】:

我正在尝试使用 SSIS 将表从 SQL Server 传输到 MySQL,但它在 SQL Server 上的 varchar(max) 和 MySQL 上的 text 列上失败。到目前为止,我已经尝试将其作为 OLE DB 到 ODBC 数据流,以及将 BCP 输出到平面文件到 ODBC 数据流。有问题的字段在 SSIS 中配置为 DT_TEXT。在这两种情况下,它都会产生以下一组错误:

[ODBC 目标 [47]] 错误:出现打开数据库连接 (ODBC) 错误。 SQLExecute 在插入第 1 行时返回错误

[ODBC 目标 [47]] 错误:出现打开数据库连接 (ODBC) 错误。 状态:'HYC00'。本机错误代码:0。[MySQL][ODBC 5.2(a) 驱动程序][mysqld-5.1.69-log] 不支持在执行时包含数据的参数数组

[SSIS.Pipeline] 错误:SSIS 错误代码 DTS_E_PROCESSINPUTFAILED。过程输入 组件“ODBC 目标”(47) 上的方法失败,错误代码为 0x80004005,而 处理输入“ODBC 目标输入”(58)。已识别的组件返回一个 ProcessInput 方法的错误。该错误是特定于组件的,但 错误是致命的,将导致数据流任务停止运行。可能有错误 在此之前发布的消息,其中包含有关失败的更多信息。

当我选择忽略该列时,包的两个版本都运行良好。

我还想指出,以前这是使用带有 openquery 的链接服务器完成的,并且没有任何问题。但是,由于性能问题,我们正试图远离链接服务器。

更新:

我设法使用 SQL Server BCP out 和 MySQL LOAD DATA INFILE 完成了所需的行为,但知道如何使用 SSIS 数据流完成此操作仍然很不错,因为它绝对是更简单的方法,并且应该更快,因为它在内存中运行。

【问题讨论】:

    标签: mysql sql-server ssis mysql-odbc-connector


    【解决方案1】:

    确保源和目标中的文本编码相同,或者如果不是,则确保在 SSIS 中进行适当的转换。

    如果这是问题所在,下面的文章可能会有所帮助 - 它正朝着另一个方向发展(MySQL 到 SQL Server),但提供了一些关于两个数据库中使用的编码类型的有用信息,以及一些示例如何进行这种转换:

    http://agilebi.com/ddarden/2010/09/19/extracting-mysql-utf-8-fields-with-ssis/

    【讨论】:

      【解决方案2】:

      我通过更改任务属性中的 ODBC 目标解决了这个问题。我切换了InsertMethod from Batch to Row by Row.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-06
        • 1970-01-01
        • 2011-11-24
        • 2016-12-04
        • 2012-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多