Una técnica que podemos utilizar en nuestras Bases de Datos Transaccionales para optimizar las Cargas de Datos u otras operaciones de Registro Mínimo que se realicen fuera de horario, es cambiar temporalmente el Modo de Recuperación de Full a Bulk-Logged, para de este modo, poder beneficiarnos de las bondades de rendimiento de las Operaciones de Registro Mínimo, pagando el precio de perder temporalmente la posibilidad de recuperación a un punto en el tiempo (pero sólo temporalmente).
Antes de continuar, quizás pueda resultar de interés al lector consultar el artículo SQL Server FAQ: ¿Qué es el Modo de Recuperación o Modo de Registro? Modos de Recuperación Simple, de Registro Masivo (BulkLogged), y Completo (Full). Operaciones de Registro Mínimo, para recordar las consideraciones y diferencias de los diferentes Modos de Recuperación así como las Operaciones de Registro Mínimo.
En cualquier caso, la pregunta a realizar es la siguiente: Si tengo una Base de Datos Transaccional configurada con el Modo de Recuperación FULL ¿Qué Procedimiento debo seguir para cambiar temporalmente el Modo de Recuperación Bulk-Logged durante la ejecución de operaciones de Registro Mínimo?
Para este caso, la recomendación de Microsoft, es seguir los siguientes pasos:
- Realizar un Backup de LOG.
- Establecer el Modo de Recuperación Bulk-Logged (ALTER DATABASE SET RECOVERY BULK_LOGGED).
- Realizar las Operaciones de Registro Mínimo deseadas.
- Establecer el Modo de Recuperación Full (ALTER DATABASE SET RECOVERY FULL).
- Realizar un Backup de LOG.
La necesidad de realizar un par de Backups de LOG adicionales como parte de este procedimiento, es debido a que al tener activado el Modo de Recuperación Bulk-Logged no será posible recuperar a un punto en el tiempo (es decir, o recuperamos un Backup de LOG completo o NO lo recuperamos, pero no podemos hacer un RESTORE con STOP AT), y además recordemos que al realizarse el Backup de LOG en modo Bulk-Logged es necesario acceder a las Páginas de Datos para llevárselas en el Backup de LOG. De este modo, nos garantizamos que TODOS los Backups de LOG realizados antes y después, son recuperables a un punto del tiempo. Malos entendidos, los mínimos.
Hay ciertos detalles a tener en cuenta, ya que por ejemplo, si utilizamos Database Mirroring no será posible cambiar el Modo de Recuperación Full, o bien si estamos utilizando la Replicación Transaccional algunas operaciones de Registro Mínimo no se comportarán como tal.
Además, Microsoft recomienda que mientras se mantiene el Modo de Recuperación Bulk-Logged no se tenga permitido el acceso a los usuarios y además las tareas que se están ejecutando sean repetibles (es decir, que también pueda evaluarse repetir la ejecución de dichas tareas como parte de la recuperación del sistema si fuera necesario).
Para más información puede consultarse Considerations for Switching from the Full or Bulk-Logged Recovery Model
Poco más por hoy. Como siempre, confío que la lectura resulte de interés.