/
Activar read_committed_snapshot en MS SQL Server

Activar read_committed_snapshot en MS SQL Server

Se recomiendo activar para la base de datos de Thuban en el motor MS SQL Server el isolation level read_committed_snapshot. Activando a este modo se garantiza reducir a 0 o cercano a 0 los lockeos de transacciones que puedan ocurrir en la base de datos producto de:

  • Alta demanda

  • Picos de demanda (ráfagas)

  • Procesos mal diseñados

  • Agentes de integración externos que utilicen la base de Thuban y puedan generar colisiones con la operación del producto.

Para ello hay que primero verificar si este modo no se encuentra actualmente activo corriendo el siguiente query:

SELECT is_read_committed_snapshot_on, snapshot_isolation_state_desc,snapshot_isolation_state FROM sys.databases WHERE name='NOMBRE_BD'

Se debe reemplazar NOMBRE_DB por el nombre de la base de datos en cuestión.

Si el resultado es como este:

Entonces se encuentra desactivado, caso contrario, si es como este:

Entonces estará activado y no se deberá hacer nada.

 

En caso de estar desactivado y querer activarlo hay que realizar los siguientes pasos:

  1. Bajar el/los servicios de Thuban que estén utilizando la base de datos.

  2. Si luego de bajar los Thuban, continúan existiendo conexiones a la base de datos activas, las mismas deberán ser cerradas (Ver Activity Monitor de SQL Server Management Studio)

  3. Ejecutar las siguientes sentencias en orden y de a una a la vez:

ALTER DATABASE "NOMBRE_BD" SET allow_snapshot_isolation ON ALTER DATABASE "NOMBRE_BD" SET SINGLE_USER WITH ROLLBACK IMMEDIATE ALTER DATABASE "NOMBRE_BD" SET read_committed_snapshot ON ALTER DATABASE "NOMBRE_BD" SET MULTI_USER

En todos los casos se debe reemplazar “NOMBRE_DB” por el nombre de la base a la cuál se le quiere activar este isolation level.

Luego de ejecutar las sentencias del punto 3, volver a ejecutar la query de validación para verificar que haya quedado activado.

En este momento ya se pueden volver a iniciar los servicios de Thuban y continuar utilizándolo como siempre.

Para más información sobre este modo de SQL Server, su compatibilidad y funcionamiento interno sugerimos leer el siguiente articulo:

Snapshot Isolation in SQL Server - ADO.NET

Related content