SQL Server 數據庫還原進度查看


SQL Server 數據庫還原進度查看
關鍵字:數據庫,還原,進度,查看
文檔說明:
本文檔受某實際需求啟發,某約500G大小數據庫還原,由於對應服務器性能較差(內存僅4G且可用內存僅2.8G),數據庫的還原一直停留在還原界面,只從數據庫還原界面無法查看具體數據庫還原進度。通過上網搜集整理,現總結本文檔,因個人水平有限,部分知識點可能有缺失甚至錯漏,敬請指正
場景描述:
正常進行SQL Server數據庫備份還原,選擇源設備等等……

點擊確定開始數據庫還原,可以看到左下角有進度:“正在執行(0%)”

但實際上該進度無實際效果,即使最終數據庫完成備份還原,該進度仍然顯示“正在執行(0%)”

進度查看:
以sa身份執行
sp_who2
可以查看當前連接情況,從其中找到Command=‘RESTORE DATABASE’,根據其SPID

執行,其中session_id即為上面SPID。
SELECT
session_id, request_id, start_time, status, command
, percent_complete, estimated_completion_time,wait_time, cpu_time, total_elapsed_time, scheduler_id
,sql_handle
--,statement_start_offset, statement_end_offset, plan_handle
, database_id, user_id --,connection_id
, blocking_session_id
, wait_type, last_wait_type, wait_resource, open_transaction_count, open_resultset_count, transaction_id
--, context_info
--, task_address
, reads, writes, logical_reads
--, text_size, language, date_format, date_first, quoted_identifier, arithabort, ansi_null_dflt_on, ansi_defaults, ansi_warnings, ansi_padding, ansi_nulls, concat_null_yields_null, transaction_isolation_level, lock_timeout, deadlock_priority, row_count, prev_error, nest_level, granted_query_memory, executing_managed_code, group_id, query_hash, query_plan_hash
FROM sys.dm_exec_requests WHERE session_id=56

也可以使用如下語句,語句執行時注意按照實際情況選擇將對應where條件取消注釋
SELECT DB_NAME(er.[database_id]) [DatabaseName]
,er.[command] AS [CommandType]
,CONVERT(DECIMAL(5, 2), er.[percent_complete]) AS [Complete_Percent]
,er.start_time
,CONVERT(DECIMAL(38, 2), er.[total_elapsed_time] / 60000.00) AS [ElapsedTime_m]
,CONVERT(DECIMAL(38, 2), er.[estimated_completion_time] / 60000.00) AS [EstimatedCompletionTime_m]
,CONVERT(DECIMAL(38, 2), (er.[total_elapsed_time] / 60000.00 * ((100-er.[percent_complete])/er.percent_complete))) AS [EstimatedCompletionTime_m2]
FROM sys.dm_exec_requests AS er
WHERE 1=1
--and DB_NAME(er.[database_id]) in ('')
and er.[percent_complete] >0
--and er.[command] in ('RESTORE DATABASE' ,'BACKUP DATABASE','BACKUP LOG','RESTORE LOG')
order by er.start_time desc


可以從中看到percent_complete,對應數據庫還原進度。一般來說當該值變為100時,意味着數據庫還原會很快完成。但某現場使用個人PC作為SQL服務器,其內存總4G,可用內存2.8G,數據庫備份大小約250G,數據庫數據文件大小約300G,數據庫日志大小約200G,數據庫還原總耗時約19個小時。
其中percent_complete為100后仍等待了較長時間(超過4個小時),可以查看到其中等待類型:BACKUPTHREAD
參考網址:
http://itknowledgeexchange.techtarget.com/sql-server/what-is-the-backupthread-wait-type/
http://www.sqlserver-dba.com/2014/03/troubleshooting-backupthread-wait-type.html

等待類型:PAGELATCH_SH
參考網址:
http://www.tiejiang.org/2514.html

等待類型:SOS_SCHEDULER_YIELD
參考網址
http://www.itpub.net/thread-1853501-1-1.html

以上幾個等待類型基本上是因為PC性能(主要是內存)有限,導致大量的類似等待,同樣較低的電腦性能也整體影響了數據庫的還原速度。

圖形化界面不顯示進度的替代解決方案
使用SQL語句。在使用圖形化界面還原數據庫時,所有設置完成后,點擊“腳本”,選擇將其生成到新查詢窗口。

注意其中關鍵在於“STATS”選項
這樣執行結果就可以在消息中看到進程,簡單易用

**
**

補充:
1、 SQL Server 數據庫備份和還原認識和總結(二)
參考網址:http://www.cnblogs.com/PongorXi/archive/2012/08/05/2623522.html
2、 特別推薦:淺談SQL Server中的事務日志(一)----事務日志的物理和邏輯構架
參考網址:http://www.cnblogs.com/CareySon/archive/2012/02/13/2349751.html


免責聲明!

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



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