sqlserver使用OpenQuery或OPENROWSET遇到的问题

时间:2022-07-28 15:04:21

OpenQuery,OPENROWSET允许用户在链接服务器上查询.通过这种方法来得到查询的结果集.   
  1.在创建存储过程中,必须设置   
        SET   ANSI_NULLS   ON   
        SET   ANSI_WARNINGS   ON   
        (在查询分析器中执行,将默认激活这些设置)   
  2.定义链接服务器(必须有sysadmin权限)   
  3.这个时候就可以使用   
  SELECT   *   FROM   OPENQUERY(linkSERVER,   'EXEC  MyStoreProc')     
  来得到存储过程返回的结果集.   
  但是存储过程MyStoreProc不能访问临时表,   
  如果使用了临时表,必须如下调用   
        SELECT   *   FROM   OPENQUERY(linkSERVER,'SET   FMTONLY   OFF ; EXEC   MyStoreProc')   
      通常来说,OPENQUERY只是作为一个快捷的远程数据库访问,它必须跟在select后面,也就是说需要返回一个recordset.   
  而加上set   fmtonly   off用来屏蔽默认的只返回列信息的设置之后,这样返回的output集合就会提交给前面的select显示。   
  如果采用默认设置,会返回空集合导致select出错,命令也就无法执行了