SQL Server中使用OPENROWSET执行xp_readerrorlog报错求助
修复OPENROWSET调用xp_readerrorlog的元数据错误问题
问题原因
SQL Server无法自动推断扩展存储过程(如master.sys.xp_readerrorlog)的返回元数据,导致使用OPENROWSET调用时触发Msg 11519错误,该问题与Ad-Hoc Distributed Queries配置无关。
解决方案一:使用临时表接收结果
通过临时表明确元数据结构,再查询数据:
-- 创建匹配xp_readerrorlog返回结构的临时表 CREATE TABLE #ErrorLog ( LogDate DATETIME, ProcessInfo NVARCHAR(50), Text NVARCHAR(MAX) ) -- 将xp_readerrorlog结果插入临时表 INSERT INTO #ErrorLog EXEC master.sys.xp_readerrorlog -- 查询所需数据 SELECT * FROM #ErrorLog -- 清理临时表 DROP TABLE #ErrorLog
解决方案二:显式定义结果集结构(WITH RESULT SETS)
在EXEC语句中通过WITH RESULT SETS指定返回结构,让OPENROWSET能识别元数据:
SELECT * FROM OPENROWSET('SQLNCLI', 'Server=.;Trusted_Connection=Yes;', 'SET FMTONLY OFF;EXEC master.sys.xp_readerrorlog WITH RESULT SETS ( ( LogDate DATETIME, ProcessInfo NVARCHAR(50), Text NVARCHAR(MAX) ) )')
内容的提问来源于stack exchange,提问作者Nani
相关产品推荐
相关产品推荐

