SQL數據庫正在恢復 查看進度


 在使用SQL的過程中..

開啟一個事務..進行大計算量..在中間出錯或者強制殺死SQL服務進程..總之事務沒有提交..

再次開啟時sql會進入自動檢查的過程..

數據庫小的話問題不大..會比較快..

但是如果數據量比較大..或者日志文件比較大..這個恢復的過程會很慢很慢..給人造成假死的假象..

這個時候有性子急的小伙伴可能就另外想辦法了..但也可能導致其他更嚴重的問題..造成損失..

下邊的腳本返回一個正在恢復的數據庫的進程進度..給一個指示..

 

DECLARE @DBName VARCHAR(64) = 'DB_Name'
 
DECLARE @ErrorLog AS TABLE([LogDate] CHAR(24), [ProcessInfo] VARCHAR(64), [TEXT] VARCHAR(MAX))
 
INSERT INTO @ErrorLog
EXEC sys.xp_readerrorlog 0, 1, 'Recovery of database', @DBName
 
SELECT TOP 10
     [LogDate]
    ,SUBSTRING([TEXT], CHARINDEX(') is ', [TEXT]) + 4,CHARINDEX(' complete (', [TEXT]) - CHARINDEX(') is ', [TEXT]) - 4) AS PercentComplete
    ,CAST(SUBSTRING([TEXT], CHARINDEX('approximately', [TEXT]) + 13,CHARINDEX(' seconds remain', [TEXT]) - CHARINDEX('approximately', [TEXT]) - 13) AS FLOAT)/60.0 AS MinutesRemaining
    ,CAST(SUBSTRING([TEXT], CHARINDEX('approximately', [TEXT]) + 13,CHARINDEX(' seconds remain', [TEXT]) - CHARINDEX('approximately', [TEXT]) - 13) AS FLOAT)/60.0/60.0 AS HoursRemaining
    ,[TEXT]
 
FROM @ErrorLog ORDER BY [LogDate] DESC

 

上邊的變量內容換成正在恢復的數據庫名稱即可


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM