Saber cual es el progreso o porcentaje de ejecución de un respaldo nativo en SQL Server es tan simple como ejecutar una consulta sobre una de las tan útiles vistas del sistema. En este caso particular sobre la vista sys.dm_exec_requests que devuelve información de lo que se esta ejecutando en SQL Server.
El código que cito a continuación lista el identificador de la sesión, la tarea que esta ejecutando, el porcentaje completado y un estimado de cuanto tiempo tendremos que esperar para que la tarea termine en minutos; nótese que este tiempo es un estimado
--Progreso de mis backups SELECT dm_er.session_id id_Sesion, dm_er.command Comando, CONVERT(NUMERIC(6, 2), dm_er.percent_complete) AS [Porcentaje Completedo], CONVERT(VARCHAR(20), Dateadd(ms, dm_er.estimated_completion_time, Getdate()),20) AS [Tiempo Estimado Finalizacion], CONVERT(NUMERIC(6, 2), dm_er.estimated_completion_time / 1000.0 / 60.0) AS [Minutos pendientes] FROM sys.dm_exec_requests dm_er WHERE dm_er.command IN ( 'RESTORE VERIFYON', 'RESTORE DATABASE','BACKUP DATABASE','RESTORE LOG','BACKUP LOG', 'RESTORE HEADERON' )
Hoy tuve la suerte de que un buen amigo me recordara que no es bueno olvidar las fuentes, y este código no es de mi autoría, el mismo lo encontré por primera vez por el 2010; los cambios que le he hecho son pocos, hacer un tipo de dato mas grande para evitar desbordamientos, etiquetas, agregar procesos en ejecución. El mismo lo encontré por primera vez en esta pagina; siendo utilizado por mis compañeros de trabajo en general