Oracle Data Integrator - Version: 3.2.03
这个问题可能发生在当前的任何平台。
症状
它出现在Microsoft SQL Server关于多数据处理的情况:
例子:
在ODI(Sunnopsis)的 Microsoft SQL Server用户可以看到和直接转换中文(或者其他多字节字符)数据但是增加一个过滤器对中文(或者其他多字节)数据集成接口出现不正确的功能。
注意:这个问题是少见的在一个single-language环境(当中文或英文之一在独占使用时)和只能发生在一个同时使用两种语言的环境。
原因;
Mircrosoft SQL Server操作的ACTIVE数据库的参数设置条件。例如,如果一个数据库中使用的是中文的排序规则设置和在其他数据库中使用西方的排序规则设置,然后下面的查询将返回不同的结果是取决于你所连接的那个数据库:
select
datalength('<chinese character>') as len_string,
datalength(N'<chinese character>') as len_unicode_string
解决方案
通常情况下,这样的问题可避免强制ODI(Sunopsis) 使用任何的字符串数据元素作为一个unicode对象。这是将一个大写字母N在前面字符串中实现。例如:
N是一个unicode字符串’但是这个字符串使用当前操作系统的代码页面’。
两者选一的解决方案:
当使用Microsoft JDBC 驱动程序时,你可能迫使ODI连接到指定的数据库使用JDBC数据服务器JDBC选项卡上设置的URL,以强制的ODI使用相关的排序规则设置。
例如:
jdbc:microsoft:sqlserver://myHost:1433;SelectMethod=cursor;databaseName=MyChineseDB
请注意在iNet 为Microsoft SQL Server的JDBC驱动程序指定一个字符集正确处理多字节数据的其他方式:
jdbc:inetdae7:myHost:1433
jdbc:inetdae7:myHost:1433?charset=Cp950
jdbc:inetdae7:myHost:1433?database=MyChineseDB
jdbc:inetdae7:myHost:1433?database=MyDb&language=us_english