Cuando se hacen ‘restore’ o ‘backup’ en bases de datos SQL Server 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')
- dm_exec_requests
- Tiempo de finalización de procesos en SQL Server