Às vezes precisamos monitorar uma atividade específica, por exemplo, um Backup, Restore, DBCC etc… E também precisamos ter, possivelmente, um tempo estimado de término (ou ETA) que leva para finalizar esta atividade, certo?
Então decidi escrever esse script muito tempo atrás, e é um daqueles que fazem parte do meu “canivete suíço” do dia a dia.
--Monitorar Backup, Restore, DBCC Table Check, DBCC SELECT r.session_id,s.login_name,DB_NAME(r.database_id) as database_name, r.command,CONVERT(NUMERIC(20,2),r.percent_complete) AS [PERCENT Complete],CONVERT(VARCHAR(20),DATEADD(ms,r.estimated_completion_time,GETDATE()),20) AS [ETA COMPLETION TIME], CONVERT(NUMERIC(20,2),r.total_elapsed_time/1000.0/60.0) AS [Elapsed MIN], CONVERT(NUMERIC(20,2),r.estimated_completion_time/1000.0/60.0) AS [ETA MIN], CONVERT(NUMERIC(20,2),r.estimated_completion_time/1000.0/60.0/60.0) AS [ETA Hours], s.status, CONVERT(VARCHAR(1000),(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) END) FROM sys.dm_exec_sql_text(sql_handle))) as 'Script' FROM sys.dm_exec_requests r left join sys.dm_exec_sessions s on (s.session_id = r.session_id) WHERE command LIKE 'BACKUP%' OR command LIKE 'RESTORE%' OR command LIKE 'DBCC%' OR command LIKE '%INDEX%' OR command LIKE '%STATISTICS%' OR command LIKE '%ALTER%'