本地服务器:WINdows2008 server,SQL SERVER 2005+SP3
远程服务器:LINUX,ORACLE 10g
测试链接服务器均正常,且可以正常打开一些系统表。但想查看用户表时,出现如下错误:枚举列 对于 LinkedServer “ERP”失败。(Microsoft.SqlServer.Smo)
其他信息:
  执行Transact-SQL 语句或批处理时发生了异常。(Microsoft.SqlServer.ConnectionInfo)
    无法从链接服务器“(null)”的OLE DB访问接口“SQL Server”获取行的数据。由于数据值溢出了提供程序所用数据类型的取值范围,转换失败。(Microsoft SQL Server,错误:7346)
在本地服务器中使用ORACLE客户端以及PL/SQL工具均可以访问相关表。
我在链接到另一台也是LINUX+ORACLE 10g的服务器时正常。这个问题困扰我一周了,请高手帮忙!

解决方案 »

  1.   

    我就是在左侧展开表的列表,然后右击此张表“编写脚本为/SELECT到/新查询编辑窗口”时出的错,并没有自己写语句。
      

  2.   

    如果我在查询编辑器中,直接输入语句SELECT * 
       FROM [ERP]..[GXSJ].[表1]执行时出现如下错误:
    链接服务器“ERP”的OLE DB访问接口“MSDAORA”不包含表“"GXSJ”."表1"”。该表不存在,或者当前用户没有访问该表的权限。但在PL SQL中用此用户登录时,可以对该表进行操作,而且可以修改。
      

  3.   

    这样应该是不行的 select * from 服务器名称.数据库名.表名 
      

  4.   

     试试
    SELECT *  
      FROM [ERP].[GXSJ].[表1]或者SELECT *  
      FROM [ERP]..[GXSJ]..[表1]
      

  5.   

    1)、查询                  格式1:select * from  [链接服务器名]..[Oracle连接用户名].[Oracle表名]                select * from  TEST2..IFSAPP.table1         格式2:select * from  OPENQUERY([链接服务器名],'PL/SQL 语句')                select * from OPENQUERY(TEST2,'select * from ifsapp.table1')         格式3:Exec("select * from [Oracle用户].[表1]") AT [链接服务器名]                Exec("select * from ifsapp.table1") AT TEST2    2)、更改         格式1:             insert   into openquery(TEST2,'select * from ifsapp.table1')     
                 select   cols1,cols2,...   from    SQLTable1;         格式2:             insert   into openquery(TEST2,'select * from ifsapp.table1')     
                 values ('cols1','cols2',...);          格式3:             update  openquery(OERP,'select * from ifsapp.table1')  set    cols1= 'LEO',...   where IKEY=4               格式4:Exec("update [Oracle用户].[表1] set col1=xx where ikey=1") AT [链接服务器名]                Exec("update IFSAPP.table1  set col1=xx where ikey=1") AT TEST2
      

  6.   

    表明不是就叫中文的 表1 吧。写的时候注意英文字母都要大写。实在不行换个oracleclient的版本试试
      

  7.   

    错误已经很明显了,表1不存在。你在ORACLE中可以查询吗?比如使用sqlplus? 
      

  8.   

    在ORACLE客户端中可以操作。
      

  9.   

    你从本地的MSSQL远程连接到服务器的oracle,错误信息提示数据值溢出了提供程序所用数据类型的取值范围,执行Transact-SQL 语句或批处理时发生了异常。说明你MSSQL中的语句远程连接oracle执行时出现错误,而且两个类型的数据库数据类型也有区别啊。你上面排除了权限、语句的问题。是不是你远程连接实例选择不正确?
      

  10.   

    实例也对的,因为使用PLSQL正常。
    我现在怀疑是不是远程的ORACLE的版本存在微小差异而导致的。
    有一台ORACLE的远程服务器,使用相同的方法就可以访问;而另一台则不行。
      

  11.   

    SQL Server Linked server连接ORACLE有时候会有很多问题的,你换个Linked server 的Provider试试?
      

  12.   

    是不是做链接服务器时,的n股链接服务器的账号的权限问题?由于数据值溢出了提供程序所用数据类型的取值范围,转换失败。(Microsoft SQL Server,错误:7346)
    --》》这个提示说的是数据类型的转换问题。oracle和sql的数据类型上还是稍有差异的
      

  13.   

    感谢大家热心相助。我使用这种格式的请语句就可以了:select * from  OPENQUERY([链接服务器名],'PL/SQL 语句')再次感谢大家!