2015-05-06 43 views
6

我已經做了大量的研究。SQL RESTORE WITH RECOVERY;掛在100%

我試圖用SQL Server 2014恢復數據庫,它一直掛在100%。

很多人建議解決方案是確保您使用RECOVERY選項進行恢復。

我試過了,它仍然掛在100%。我已經通過了SSMS試圖恢復對話,我曾嘗試運行下面的SQL語句:

USE [master] 
RESTORE DATABASE [MyDB] 
FROM DISK = N'C:\MyDB_backup_2015_05_05_010004_1506557.bak' 
WITH 
    FILE = 1, 
    MOVE N'MyDB_Data' TO N'F:\MSSQL\DATA\MyDB.mdf', 
    MOVE N'MyDB_Log' TO N'F:\MSSQL\DATA\MyDB_1.ldf', 
    NOUNLOAD, 
    REPLACE, 
    RECOVERY, 
    STATS = 2 
GO 

當我通過檢查命令的狀態:

SELECT r.status, r.command, r.wait_type, r.percent_complete 
FROM sys.dm_exec_requests r 
WHERE r.command like '%restore%' or r.command like '%backup%' 

我得到:

status: suspended 
command: RESTORE DATABASE 
wait_type: BACKUPTHREAD 
percent_complete: 100 

從我的閱讀中可以看出RESTORE正在等待備份完成,但沒有從我的查詢返回到sys.dm_exec_requests的BACKUP命令

編輯:再次嘗試並運行上述查詢以從一開始就觀察RESTORE的進度後,我可以看到「percent_complete」值穩步增加,儘管「狀態」仍爲'暫停','wait_type'仍然是'BACKUPTHREAD'。

因此,儘管它被「暫停」,但它實際上仍在執行RESTORE。

所以我不知所措......

任何人有什麼是怎麼回事任何想法或對如何診斷問題的提示?

乾杯!

+0

可以檢查'sp_who'和'sp_who2'來知道哪個數據庫有待處理的備份? – Jaxedin

+0

sp_who或sp_who2中沒有包含cmd'BACKUP'的行 – JTech

+1

您等待了多長時間?你的日誌文件有多大?它包含多少個VLF?備份時數據庫的狀態是什麼?你有跟蹤標誌3004和3014嗎? (見[這篇文章](http://www.rdx.com/Blog/dba_tips/2011/03/undocumented-trace-flags-inside-the-restore-process/)。) –

回答

3

事實證明這個問題是與環境相關的和非常直截了當:

首先,我試圖從備份非縮水備份源數據庫的版本。

日誌文件的大小實際上是一個已知問題,因此我們通常從數據庫的縮小版本進行備份。

因此,如果任何人有類似的問題,首先嚐試縮小數據庫,然後備份和恢復。

其次,我試圖通過USB3將數據庫備份到外部驅動器。

另外,有趣的是,我觀察了工作恢復命令的進度,並且它也具有'暫停''wait_type''BACKUPTHREAD'的狀態 - 即使它仍在進行中(如完成百分比增加在percent_complete)列中!所以,我還是輸了,什麼多數民衆贊成...

但至少現在我可以恢復我的備份:-)

1

我有同樣的問題,這是由於數據庫的大小。 儘管備份顯示9 MB,但當我在SQL Server管理器中右鍵單擊數據庫並選擇屬性時,顯示的大小爲25 GB! 我所做的是將數據庫更改爲「簡單恢復」,縮小日誌文件,再次備份,現在可以恢復。

+0

如果有人正在第一次做Shink:Task-> Shrink ... –