Cuando se hacen ‘restore’ o ‘backup’ en bases de datos muy grandes, estos procesos pueden durar muchos minutos o en algunos casos horas y no vemos resultado hasta que se termina el proceso.
SQL Server brinda el procedimiento almacenado sys.dm_exec_requests, con el cual se puede ver esta información, pero si queremos ver como se interpreta puede ser un poco complicado.
Con el siguiente script podemos ver el porcentaje de avance, minutos pendientes y tiempo estimado de finalización del proceso.
SELECT r.session_id, r.command Comando, CONVERT(NUMERIC(10, 2), r.percent_complete) AS 'Porcentaje', CONVERT(NUMERIC(10,2), r.total_elapsed_time / 1000.0 / 60.0) AS 'Tiempo transcurrido', CONVERT(VARCHAR(20), Dateadd(ms, r.estimated_completion_time, Getdate()),20) AS 'Estimado finalización', CONVERT(NUMERIC(10, 2), r.estimated_completion_time/1000.0/60.0) AS 'Minutos pendientes', CONVERT(NUMERIC(10,2), r.estimated_completion_time/1000.0/60.0/60.0) AS 'Horas pendientes' FROM sys.dm_exec_requests r WHERE r.command IN ( 'RESTORE VERIFYON', 'RESTORE DATABASE', 'BACKUP DATABASE','RESTORE LOG','BACKUP LOG', 'RESTORE HEADERON', 'DbccFilesCompact')