使用链接服务器的数据库连接。 (数值)

时间:2010-12-07 15:35:46

标签: sql-server sql-server-2005 linked-list

所以我建立了从SQL Server 2008 Express Edition到Oracle数据库的连接。 当我查询基于varchar的值时,它很好,但对于任何数值,它会抛出像这样的错误。

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

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:3)

我自己也遇到了这个问题。您的错误是由链接未正确处理的数字字段引起的。最简单的解决方法是转换为OPENQUERY中的varchar,并转换回另一侧的数字

SELECT CONVERT(INT, YourField ) AS YourField   
FROM OPENQUERY (LINKEDSERVER, 
'SELECT TO_CHAR(YourField ) AS YourField FROM RemoteTable');

答案 1 :(得分:1)

答案 2 :(得分:1)

一个人说他们在Oracle的Metalink DocID 369814.1中找到了答案。他们说解决方案是安装最低版本为10.2.0.2.20的Oracle OLEDB驱动程序。 他们安装了Oracle客户端10.2.0.3,然后应用了适用的补丁(在Metalink DocID 369814.1中有描述)。

我在http://forums.oracle.com/forums/thread.jspa?threadID=337842&start=15&tstart=135找到了这篇文章。

这似乎是比转换为char数据类型,然后转换回numeric数据类型更好的解决方案。我认为这些转换会让您失去性能。

答案 3 :(得分:1)

我们在其中一个环境中遇到了同样的问题,问题是我们错误地设置了链接服务器。

我们将其更改为Microsoft OLD DB Provider for Oracle并解决了问题。希望这会有所帮助。