sqlserver使用OpenQuery或OPENROWSET遇到的问题
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出错,命令也就无法执行了