Siempre escribo mensajes en una tabla "EventLog". Al procesar grandes cantidades de datos, administro los datos en fragmentos y escribo actualizaciones de estado en EventLog después de cada fragmento.
Cuando quiero verificar el progreso del proceso de larga ejecución, simplemente consulto la tabla EventLog.
Ejemplo de salida:
-------------------
- Mi gran actualización -
-------------------
Inicio: 2011-05-03 10:00:00
Registros a procesar: 1,000,000
Trozos: 200
--- Trozo 1 ---
Intentando actualizar MyTable
Registros actualizados: 5000
Registros restantes: 995,000
Rendimiento: 4210 registros por segundo
--- Trozo 2--
Intentando actualizar MyTable
Registros actualizados: 5000
Registros restantes: 990,000
Rendimiento: 3555 registros por segundo
--- Trozo 3--
etc.
También tengo columnas en la tabla EventLog para rastrear cuándo se escribió el mensaje, qué proceso escribió el mensaje, etc. Perdón por no incluir esa información en mi ejemplo.