Sql-Server
將 sp_describe_first_result_set 與還原一起使用時出錯
sp_describe_first_result_set
是否支持使用 system sp 查詢備份元數據?例如查詢:
SELECT * FROM sys.dm_exec_describe_first_result_set (N'RESTORE HEADERONLY FROM DISK =''C:\SQLBackups\SomeDBbackup.bak''',NULL,0)
為每個欄位返回 NULL。
error_message 欄位:
無法確定元數據,因為語句 RESTORE HEADERONLY …. 不支持元數據發現。
error_type_desc 欄位:
UNSUPPORTED_STATEMENT
有沒有辦法使這個查詢工作?
謝謝
無法確定元數據,因為語句 RESTORE HEADERONLY …. 不支持元數據發現。
錯誤資訊清楚地告訴你這
RESTORE HEADERONLY
是不支持的語句,它不支持元數據發現。所以沒有辦法使這項工作。它沒有被實施。
更新
您發布的連結中有一個解決方案,但問題不是如何
sp_describe_first_result_set
使用不受支持的 smth(這是您的問題),而是如何從RESTORE HEADERONLY
結果集中只取回一些列,即如何獲取結果的RESTORE HEADERONLY
“可查詢”形式。有這樣的解決方案:
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 看到它):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
,您可以向自己證明它執行簡單的 SELECT 查詢並使用 Profiler 監控執行(即使在 2012 年)。但是在您的特定情況下,查詢已按上述方式進行轉換,您不能對它做任何事情。