我有一个接口,它是一个简单的接收端映射sendport。 receiveport是添加生成的项目查询的结果。该查询只从数据库中获取一些adres数据。这些数据确实包含了“外国人”。但是当我在Oracle SQL Developer上运行查询时,它工作正常(给我12800行)。
当BizTalk运行查询时,它会给出一个ORA,我认为这是db给BizTalk的一个错误我错了吗?
我实际上在哪里解决这个问题?如何?我是否需要找出数据库中使用的字符集并在查询中使用转换?
答案 0 :(得分:2)
这是来自Oracle的错误 - 它不太可能是由BizTalk或WCF适配器引起的。它表示您的Oracle DB中有一些损坏的数据。您可能没有在SQL Developer中收到错误,因为SQL Developer默认只返回前50行(直到您实际向下滚过它们)。
我会使用这样的策略:http://vibhork.blogspot.com/2011/02/fix-of-ora-29275-partial-multibyte.html尝试查找错误的数据(例如,使用ROWNUM
遍历行,直到找到错误的行) - 您可以模拟在SQL Developer中只需向下滚动直到出现错误(我认为)。如果你可以修复数据,修复它 - 如果数据是由另一个源放在那里的,你要么必须让那个源停止在那里放入无效字符,要么你必须转换/连接列这会导致问题,例如:
SELECT problem_column || '' FROM table
或
SELECT CONVERT(COLUMN NAME,'NLS_CHARACTERSET','NLS_CHARACTERSET') FROM table
例如,您可以尝试SELECT CONVERT(COLUMN NAME, 'UTF8', 'US7ASCII')
。