Seguro te ha pasado que debes hacer un backup como parte de alguna proyecto o para atender alguna solicitud específica. Cuando lo tenemos que ejecutar sobre bases de datos de gran tamaño (VLD = Very Large Database) y el tiempo de ejecución es largo, podemos hacer uso del siguiente script para tener información sobre el porcentaje de avance y la fecha y hora estimada de término. Así podemos informar a los interesados.
El script utiliza la vista de administración dinámica del sistema sys.dm_exec_requests para conocer las operaciones activas en el servidor, y la función del sistema sys.dm_exec_sql_text() para conocer el texto de la sentencia.
El script es el siguiente:
1 2 3 4 5 6 7 8 9 10 |
SELECT req.session_id AS IDSesion, req.command AS TipoComando, txt.text AS Comando, req.start_time AS HoraInicio, req.percent_complete AS PctAvance, dateadd(second,req.estimated_completion_time/1000, getdate()) as HoraFinEstimada FROM sys.dm_exec_requests req CROSS APPLY sys.dm_exec_sql_text(req.sql_handle) txt WHERE req.command in ('BACKUP DATABASE','RESTORE DATABASE') |
Cuando ejecutamos el script mientras se procesa el backup, el resultado que obtenemos es el siguiente:

Como pueden ver, el script permite hacer seguimiento con un porcentaje de avance y una hora estimada de término. Información clave para poder dar soporte al proceso. Además podemos ver la sentencia exacta del BACKUP.
Adicionalmente, si la tarea es un RESTORE, y si es parte de un proceso de recuperación de desastres, informar sobre los tiempos también es clave. El mismo script sirve para hacer seguimiento a los RESTORE:

Puedes descargar este y otros scripts en mi cuenta de GitHub: dbLearner (DBLearner) (github.com)