我正在创建一套包,以将数据从我们在 Informix IDS 11.7 上运行的 ERP 系统导入 SQL Server (2012)。
使用 SSIS 导入这些数据我遇到了一个问题。我可以通过 2 种方式访问数据,使用 ODBC 连接和 ADO.NET 数据源,或者使用 OLEDB 连接和提供程序。
使用 ODBC 大约慢了 3 倍(保守地说!),所以我自然很想摆脱这种情况。
但是问题是,当我使用 OLEDB 时,数据源报告了错误的数据类型。
服务器上的 NVARCHAR 数据类型将作为 VARCHAR (DT_STR) 报告给 SSIS。这在导入数据时会导致问题,因为任何传入的 unicode 数据都会导致包失败。这里没有机会进行数据转换,当数据到达数据源组件时,包会失败。我可以将组件设置为忽略这些错误,它会运行良好,但缺少数据,这是完全不可接受的。
我尝试在 setnet32 中设置 DB_LOCALE 和 CLIENT_LOCAL,没有任何效果。
当您创建 OLEDB 数据源时,它会抱怨无法找到默认代码页,因此您必须将属性设置为“AlwyasUseDefaultCodePage”以使该警告消失,但设置默认代码页不会似乎实际上改变了它的行为,即使我将代码页设置为 65001 之类的东西,它仍然试图将这些数据作为 VARCHAR 传递。
所以,我的问题是,我怎样才能让 Informix 的 OLEDB 驱动程序正常工作,或者设置/强制 SSIS 认为这个数据实际上是 DT_WSTR,而不是 DT_STR?
谢谢!