我正在尝试使用 SSIS 将表从 SQL Server 传输到 MySQL,但它在 SQL Server 上的 varchar(max) 和 MySQL 上的 text 列上失败。到目前为止,我已经尝试将其作为 OLE DB 到 ODBC 数据流,以及将 BCP 输出到平面文件到 ODBC 数据流。有问题的字段在 SSIS 中配置为 DT_TEXT。在这两种情况下,它都会产生以下一组错误:
[ODBC 目标 [47]] 错误:发生打开数据库连接 (ODBC) 错误。插入第 1 行时 SQLExecute 返回错误
[ODBC 目标 [47]] 错误:发生打开数据库连接 (ODBC) 错误。状态:'HYC00'。本机错误代码:0。 [MySQL][ODBC 5.2(a) 驱动程序][mysqld-5.1.69-log] 不支持包含执行数据的参数数组
[SSIS.Pipeline] 错误:SSIS 错误代码 DTS_E_PROCESSINPUTFAILED。处理输入“ODBC 目标输入”(58) 时,组件“ODBC 目标”(47) 上的 ProcessInput 方法失败,错误代码为 0x80004005。已识别的组件从 ProcessInput 方法返回错误。该错误是特定于组件的,但该错误是致命的,将导致数据流任务停止运行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。
当我选择忽略该列时,包的两个版本都运行良好。
我还想指出,以前这是使用带有 openquery 的链接服务器完成的,并且没有任何问题。但是,由于性能问题,我们正试图远离链接服务器。
更新:
我设法使用 SQL ServerBCP out
和 MySQL完成了所需的行为,LOAD DATA INFILE
但知道如何使用 SSIS 数据流完成这一点仍然很好,因为它绝对是更简单的方法,并且应该更快,因为它在内存中运行。