Подключение к базе данных с использованием связанного сервера. (Числовые значения) - PullRequest
1 голос
/ 07 декабря 2010

Итак, я установил соединение с SQL Server 2008 Express Edition с нашей базой данных Oracle.Когда я запрашиваю значения на основе varchar, это нормально, но для любого числового значения он выдает ошибку вроде этой.

Msg 9803, Level 16, State 1, Line 1
Invalid data for type "numeric".

Как мне обойти это?

Ответы [ 4 ]

3 голосов
/ 28 июля 2011

Я сам столкнулся с этим. Ваша ошибка вызвана тем, что числовые поля неправильно обрабатываются связью. Самое простое решение - привести к varchar внутри вашего OPENQUERY и вернуться к числу на другой стороне

SELECT CONVERT(INT, YourField ) AS YourField   
FROM OPENQUERY (LINKEDSERVER, 
'SELECT TO_CHAR(YourField ) AS YourField FROM RemoteTable');
1 голос
/ 30 мая 2012

У нас была такая же проблема в одной из наших сред, и проблема заключалась в том, что мы неправильно настроили связанный сервер.

Мы изменили его на Microsoft OLD DB Provider для Oracle, и проблемы были решены. Надеюсь, это поможет.

1 голос
/ 02 августа 2011

Один человек сказал, что нашел ответ в Oracle Metalink DocID 369814.1. Они сказали, что решение заключается в установке драйвера Oracle OLEDB с минимальной версией 10.2.0.2.20. Они установили клиент Oracle 10.2.0.3, а затем применили соответствующее исправление (описано в DocID Metalink 369814.1).

Я нашел это сообщение в http://forums.oracle.com/forums/thread.jspa?threadID=337842&start=15&tstart=135.

Это кажется лучшим решением, чем преобразование в тип данных char, а затем обратное преобразование в числовой тип данных. Я предполагаю, что эти преобразования будут стоить вам производительности.

1 голос
/ 07 декабря 2010

Может быть, это поможет ...

http://msdn.microsoft.com/en-us/library/ms151817.aspx

...