db2 SSIS 2015/SQL服务器2016版:某些列值未从AS/400加载

doinxwow  于 2022-11-07  发布在  DB2
关注(0)|答案(1)|浏览(260)

我们在SSIS 2015中通过OLE DB Provider for DB2从AS/400阅读和加载某些列时遇到问题,该项目位于SQL Server 2016中。我们正在从使用SQL Server 2008的旧服务器迁移该项目。在新服务器中,当我预览数据流OLE DB源中的数据时,某些列的值为“System.Byte[]”。2我收到消息“下列输出列的元数据与输出列所关联的外部列的元数据不匹配”。3外部列被读作DT_BYTES,而在旧服务器上,它们被读取为DT_STR。输出列也需要DT_STR。
SSIS更改了外部列的元数据,从而使这些列不可读。
我试着把它们转换成字符串,但没用。
我尝试将“ValidateExternalMetadata”设置为False,但没有任何结果。
令人疯狂的是,对于其他一些具有类似数据类型的表,它可以很好地读取它们,它们与失败的表具有完全相同的数据类型。
AS/400本身没有问题,因为旧的SSIS 2008读取一切都很好。
所以,我敢肯定问题要么是OL DB2提供程序,SSIS 2015或SQL Server 2016.
我无法使用高级编辑器强制它将外部列读取为STR。
我还尝试将输出列中的数据类型转换为DT_BYTES以与之匹配,但仍然不起作用。
它甚至不能从头读取列。
我尝试了一个全新的包,没有查询,只是从源代码中阅读表,仍然是同样的问题。
我更改了代码页以匹配原始(1256),仍然没有任何结果,然后我更改了它以匹配新的(1252),仍然没有成功。
我真的被困住了,我试了所有我能试的。
有什么需要帮忙的吗?

iqjalb3h

iqjalb3h1#

我终于解决了!
解决方法是打开连接管理器,转到“All”选项卡,然后将二进制代码页值(默认值为0)与主机CCSID值匹配。
我还将DBMS平台设置为“DB2/AS 400”。

相关问题