首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在使用sp_describe_first_result_set和Restore时出错

在使用sp_describe_first_result_set和Restore时出错
EN

Database Administration用户
提问于 2017-11-15 07:07:44
回答 1查看 1.2K关注 0票数 0

是否支持使用sp_describe_first_result_set system sp查询备份元数据?

例如,查询:

代码语言:javascript
运行
复制
SELECT * FROM sys.dm_exec_describe_first_result_set (N'RESTORE HEADERONLY FROM DISK =''C:\SQLBackups\SomeDBbackup.bak''',NULL,0)

为每个字段返回NULL。

error_message字段:

无法确定元数据,因为语句还原HEADERONLY。不支持元数据发现。

error_type_desc字段:

UNSUPPORTED_STATEMENT

有办法使这个查询工作吗?

谢谢

EN

回答 1

Database Administration用户

回答已采纳

发布于 2017-11-15 08:37:02

无法确定元数据,因为语句还原HEADERONLY。不支持元数据发现。

错误消息清楚地告诉您,RESTORE HEADERONLY是不受支持的语句,它不支持元数据发现。

所以没有办法让这件事成功。它没有得到执行。

更新

在您发布的链接中有一个解决方案,但问题不在于如何使用不支持的smth (即您的问题)使work sp_describe_first_result_set,而是如何从RESTORE HEADERONLY结果集返回一些列,即如何以“可查询”的形式获得RESTORE HEADERONLY的结果。

有这样一个解决方案:

代码语言:javascript
运行
复制
SELECT BackupStartDate 
FROM OPENQUERY(LOCALSERVER, 
               'SET FMTONLY OFF;
               EXEC(''
               RESTORE HEADERONLY 
               FROM DISK = ''''C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQL2008\MSSQL\Backup\DB1.bak''''
'')')

但正如你所看到的,服务器的问题是2008年。

首先介绍了SQL Server 2012 sp_describe_first_result_set,现在如果您尝试执行上面的查询,将执行另一件事情(您可以使用Profiler看到它):

代码语言:javascript
运行
复制
exec [sys].sp_describe_first_result_set N'SET FMTONLY OFF;
               EXEC(''
               RESTORE HEADERONLY 
               FROM DISK = ''''C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQL2008\MSSQL\Backup\DB1.bak''''
'')',NULL,1

认为OPENQUERY/OPENROWSET总是使用sp_describe_first_result_set是错误的,您可以向自己证明使用Profiler执行简单的SELECT查询和监视执行(甚至在2012年)。但是,在您的特定情况下,查询会像上面所描述的那样进行转换,您不能对它做任何事情。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/190954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档