Этот связанный сервер работал нормально до того, как мы обновили SQL Server 2005 до 2008R2, но теперь он выдает эту ошибку при запросе из определенных таблиц (он все еще работает для других таблиц):
"связанный сервер" PROD "сообщил об ошибке. Поставщик не предоставил никакой информации об ошибке ... Не удалось получить строку от поставщика OLE DB" OraOLEDB.Oracle "для связанного сервера" PROD ".
Я могу сузить проблему до одной строки, и когда я запускаю этот запрос для этой строки, я получаю другую ошибку:
select * from openquery( PROD, 'SELECT ID, NAME FROM ITEMS WHERE ID = 5437')
Ошибка:
Поставщик OLE DB "OraOLEDB.Oracle" для связанного сервера "PROD" вернул сообщение "01".
Поставщик OLE DB "OraOLEDB.Oracle" для связанного сервера "PROD" вернул сообщение "ORA-29275: частичный многобайтовый символ".
И я могу запросить ошибочный столбец NAME как DUMP, например:
select * from openquery( PROD, 'SELECT DUMP(NAME) FROM ITEMS WHERE ID = 5437')
Что возвращает:
Тип = 1 Лен = 16: 77,73,88,84,69,67,79,32,68,69,32,84,73,68,65,193
затем перестроить, используя SELECT CHAR (77) + CHAR (73) + ..., и я получаю «MIXTECO DE TIDAÁ». Суть в том, что CHAR (193) в данных Oracle вызывает сбой моего запроса. А как исправить?
Oracle (https://forums.oracle.com/forums/thread.jspa?threadID=551784) предоставляет эту таинственную подсказку:
ORA-29275: частичный многобайтовый символ
Причина: Запрошенная операция чтения не может быть завершена, поскольку в конце ввода был обнаружен частичный многобайтовый символ.
Действие: убедитесь, что полный многобайтовый символ отправлен с удаленного сервера, и повторите операцию. Или прочитайте частично многобайтовый символ как RAW.
Однако я не знаю, как «убедиться ...», и я не знаю, как «читать ... как RAW».
SQL Server - это 64-разрядная версия, работающая в 64-разрядной системе Windows Server 2008R2, на которой установлен 64-разрядный клиент Oracle 11gR2.
столбец в SQL: NAME nvarchar (60) NULL
столбец в Oracle: NAME varchar2 (60)
В SQL sp_helpsort возвращает:
Latin1-General, нечувствительный к регистру, нечувствительный к акценту, нечувствительный к канатипу, нечувствительный к ширине для данных Unicode, порядок сортировки SQL Server 52 на кодовой странице 1252 для данных не-Unicode
В Oracle NLS_CHARACTERSET: AL32UTF8
Любая помощь: почему это не работает или как заставить это работать? Дайте мне знать, если потребуется дополнительная информация.