2016-06-22 7 views
2

У меня есть интерфейс, который является простым передающим отображением получателя. Получатель является результатом запроса добавленных сгенерированных элементов. Запрос просто извлекает некоторые данные adres из база данных. Эти данные содержат «чужие» буквы, но когда я запускаю запрос в Oracle SQL Developer, он отлично работает (дает мне 12800 строк).BizTalk WCF-Custom "поднял ошибку ORA-29275: частичный многобайтовый символ

Когда BizTalk запускает запрос, он дает ORA, который я предположил была ошибка, которую db дает BizTalk, я ошибаюсь?

Где я действительно должен исправить эту проблему? и как? Мне нужно выяснить, какой набор символов используется в базе данных и использовать преобразование в запросе ?

ответ

2

Это ошибка, исходящая от Oracle - маловероятно, что это связано с BizTalk или адаптером WCF. Он указывает, что у вас есть некоторые поврежденные данные в вашей БД Oracle. Возможно, вы не получаете ошибку в 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'), например.

+0

У меня есть CTRL + A для извлечения всех строк, а данные загружаются без ошибок в SQL Developer. Как я узнаю, какие наборы символов используются в CONVERT? – Andy

+1

Я бы попробовал с 'CONVERT (COLUMN_NAME, 'UTF8', 'US7ASCII')'. Кажется странным, что вы можете загружать данные правильно в SQL Developer, хотя .. Это определенно ошибка, исходящая от Oracle, не должна быть специфичной для адаптера. Я бы действительно работал, чтобы увидеть, могу ли я воспроизвести его за пределами адаптера .... –

+1

Он отлично работает в разработчике sql и приложении Java, которое пользователи используют (а не сам эксперт). Использование CONVERT устраняет проблему, поэтому мне придется задерживать воспроизведение ошибки. Не уверен, хотите ли вы добавить определенную команду COnvert в ответ или нет. – Andy