在取消執行 Restore HeaderOnly 命令時,發現取消不了,Session長時間處於PARALLEL_BACKUP_QUEUE 等待狀態。 官方文檔:Occurs when serializing output produced by RESTORE HEADERONLY, RESTOR ...
在取消執行 Restore HeaderOnly 命令時,發現取消不了,Session長時間處於PARALLEL_BACKUP_QUEUE 等待狀態。
RESTORE HEADERONLY from disk ='\\xxx\yyy.bak'
官方文檔:Occurs when serializing output produced by RESTORE HEADERONLY, RESTORE FILELISTONLY, or RESTORE LABELONLY.
PARALLEL_BACKUP_QUEUE 等待表示,在使用多進程還原資料庫的過程中,一個進程在等待訪問輸出結果集。這個結果集被併發的所有進程共用,因此,在一個進程寫入新的數據之前,結果集中的數據必須同步。就是說,還原資料庫的多個進程必須以序列化的方式輸出結果集。
現在的問題是,等待已經持續了6-7個小時了,如何消除這種等待狀態?既然kill 不能將該session取消,只能將backup device所在server重啟。期待高人指點溫和的做法.....
查看MSDN文檔,發現 RESTORE HEADERONLY 會將掃描backup media 上的所有backup set,一個backup media可能存儲多個backup set,掃描所有的backup set 十分耗時。建議使用RESTORE LABELONLY,該命令只會讀取backup media的頭部信息。
如圖,只讀取Meida Header,能夠快速獲取backup meida包含的信息,但是Header 包含的信息十分有限。
MSDN:RESTORE HEADERONLY looks at all backup sets on the media. To get a quick look at the media without getting information about every backup set, use RESTORE LABELONLY. Executing RESTORE LABELONLY is a quick way to find out what the backup media contains. Because RESTORE LABELONLY reads only the media header.
This wait type is when a thread in a parallel restore is waiting for access to an output result set. The result set is being shared by the parallel threads so there has to be synchronization around entering new rows into it.
譯文:這種等待表示,在併發(多進程)還原的過程中,一個進程在等待訪問輸出結果集。這個結果集被併發的所有進程共用,因此,在寫入新的數據之前,結果集中的數據必須同步。