使用下列查询时,出现错误:
select a.* from OPENROWSET('SQLOLEDB','Server=(local);TRUSTED_CONNECTION=YES;','exec [SUSDB]..[spGetSummariesPerUpdate]') as a
Msg 7357, Level 16, State 2, Line 1
无法处理对象"exec [SUSDB]..[spGetSummariesPerUpdate]"。连结服务器"(null)" 的OLE DB 提供者"SQLNCLI" 指出对象没有数据行,或是目前的用户没有
使用该对象的权限。
找到微软SQL2000上关于OpenQuery查询时的提示
http://support.microsoft.com/kb/297368
T-SQL function OpenQuery fails to execute on linked servers
OpenQuery needs metadata about the columns at compile time. To retrieve the metadata, OpenQuery makes OLE DB calls which eventually
execute the query with the SET FMTONLY ON option. As a result, OpenQuery fails to execute. Because of this behavior, queries that do
not return metadata about columns, such as SQL Server stored procedures, cannot be run by using OpenQuery.
解决方法,在语句中加SET FMTONLY OFF开关即可:
select a.* from OPENROWSET('SQLOLEDB','Server=(local);TRUSTED_CONNECTION=YES;','SET FMTONLY OFF exec [SUSDB]..
[spGetSummariesPerUpdate]') as a
下列是有关SET FMTONLY的解释:
SET FMTONLY 只将元数据返回给客户端。
语法:SET FMTONLY { ON | OFF }
注释:
当 SET FMTONLY 为 ON 时,将不对行进行处理,也不将行作为请求的结果发送到客户端。
SET FMTONLY 的设置是在执行或运行时设置,而不是在分析时设置。
权限:
SET FMTONLY 权限默认授予所有用户。
示例
下例将 SET FMTONLY 的设置更改为 ON 并执行 SELECT 语句。该设置使该语句只返回列信息,而不返回数据行。
SET FMTONLY ON
GO
USE pubs
GO
SELECT *
FROM pubs.dbo.authors
GO
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9932141/viewspace-625224/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/9932141/viewspace-625224/