Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Want to know how long it’s estimated to take for your SQL long running SQL command to finish execution? SQL 2005’s dynamic management view (DMV) sys.dm_exec_requests can help you estimate completion of long-running tasks. The example below gives you the syntax to get an estimate for when your database backup or restore will be finished.
SELECT r.session_id AS [Session ID], r.command AS [Command Type],
CONVERT(NUMERIC(6,2),r.percent_complete) AS [Percent Complete],
CONVERT(VARCHAR(20),DATEADD(ms,r.estimated_completion_time,GetDate()),20) AS [ETA Completion Time],
CONVERT(NUMERIC(6,2),r.total_elapsed_time/1000.0/60.0) AS [Elapsed Min],
CONVERT(NUMERIC(6,2),r.estimated_completion_time/1000.0/60.0) AS [ETA Min],
CONVERT(NUMERIC(6,2),r.estimated_completion_time/1000.0/60.0/60.0) AS [ETA Hours],
-- also include actual command, helpful if several parallel backup/restore commands are running
CONVERT(VARCHAR(256),
(SELECT SUBSTRING(text,r.statement_start_offset/2,
CASE WHEN r.statement_end_offset = -1 THEN 1000 ELSE (r.statement_end_offset-r.statement_start_offset)/2 END)
FROM sys.dm_exec_sql_text(sql_handle))) AS Command
FROM sys.dm_exec_requests r
WHERE command IN ('RESTORE DATABASE','BACKUP DATABASE')
Special thanks to Alexey Yeltsov for providing this solution.