
La Base de Datos En Recuperación en SQL Server 2012 se refiere al estado en que una base de datos se encuentra durante el proceso de volver a un estado consistente después de un fallo, como un apagón repentino o un error del sistema. En esencia, SQL Server está trabajando para deshacer o rehacer las operaciones pendientes para asegurar la integridad de los datos.
El proceso de recuperación consta principalmente de dos fases: Análisis y Rehacer/Deshacer. La fase de Análisis examina el registro de transacciones para identificar transacciones que estaban activas en el momento del fallo. Luego, las fases de Rehacer y Deshacer entran en juego.
La fase Rehacer aplica al database las operaciones registradas en el log desde el último checkpoint, para asegurar que todas las operaciones committed sean reflected correctamente en la base de datos. Imagina que estás guardando un documento; la fase Rehacer se asegura de que todo lo que guardaste antes del fallo se guarde ahora.
Must Read
Por otro lado, la fase Deshacer revierte las transacciones que estaban en curso (no committed) en el momento del fallo. Piensa en una transferencia bancaria que quedó a medias; la fase Deshacer la cancela para evitar errores. SQL Server usa el log de transacciones para retroceder y deshacer los cambios incompletos.

Un ejemplo práctico es cuando reinicias tu servidor SQL Server después de un corte de energía. SQL Server automáticamente iniciará el proceso de recuperación para poner todas las bases de datos en un estado consistente. Verás mensajes en el log de errores indicando el estado de la recuperación de cada base de datos. Entender este proceso te ayuda a interpretar esos mensajes y saber cuánto tiempo podría tardar en estar la base de datos online nuevamente. Además, un buen plan de backup y restore es esencial para minimizar el tiempo de recuperación en caso de fallos catastróficos.
Finalmente, el monitoreo de las actividades de I/O al disco es crucial. Un disco lento puede alargar considerablemente el proceso de recuperación. Invertir en almacenamiento de alto rendimiento puede reducir significativamente el tiempo de recuperación y minimizar el impacto en la disponibilidad de tus aplicaciones.