目前在mssql-2000中已经新建了链接服务器,可通过(1)select * from LINK..PUB.TABLE1或者是(2)select * from openquery(TYPT,'select * from PUB.TABLE1')两种语法来获得结果集,现在问题是如果oracle那边的表如果是分区表的话则无法通过第(1)种方式来获得结果集,请问该如何解决呢?
目前要做的是,表在oracle,查询的语句写在sql2000中,通过页面将参数传递sql的存储过程,然后再将参数传给oracle来获得结果集返回到sql。另外由于openquery中无法直接传递形参,只能等所有结果集返回后再筛选,但是这样无疑增加了查询时间啊。求高人!

解决方案 »

  1.   

    LinkServer与Openquery只要权限配置好应该没问题的吧
      

  2.   

    抛出的错误如下服务器: 消息 7317,级别 16,状态 1,行 1
    OLE DB 提供程序 'MSDAORA' 返回了无效的架构定义。
    OLE DB 错误跟踪[Non-interface error:  OLE/DB provider returned an invalid schema definition.]。
      

  3.   

    某些 oracle 特有的数据结构是不被 MSDAORA 支持的,lz 可以试试用 oracle 客户端自带的 Oracle provider for OLE DB 作为数据库链接的 provider。其实,使用 openquery 也可以传递参数,使用动态语句就可以。
    declare @param int;
    set @param = ... ;
    declare @stmt varchar(1000);
    set @stmt = 'select * from openquery(TYPT,''select * from PUB.TABLE1 where param>'+
    ltrim(@param)+''')';
    execute(@stmt);
      

  4.   

    用Oracle provider for OLE DB的话读取一直出不来结果,额,原来还可以这么动态语句,再包一层,我顶7楼!!!