Encontrar el nivel de aislamiento predeterminado en SQL Server 2017 y Azure SQL DB

9

Estoy leyendo un libro relacionado con transacciones y concurrencia. En un párrafo se menciona que:

  • En la instancia de SQL Server local, el nivel de aislamiento predeterminado es lectura confirmada en función del bloqueo

Y la siguiente oración es:

  • El valor predeterminado en la Base de datos SQL es Lectura: instantánea confirmada basada en versiones de filas

Mi pregunta es: ¿cuál es la diferencia entre "instancia de SQL Server local" y "Base de datos SQL" en estas dos oraciones?

¿Cuál es el nivel de aislamiento predeterminado y cómo puedo encontrarlo? ¿Hay alguna consulta especial para averiguar el nivel de aislamiento predeterminado?

Erik Darling
fuente

Respuestas:

13

Se refiere a Azure SQL Database que usa RCSI de manera predeterminada .

Nivel de aislamiento SQL

La configuración amplia de la base de datos predeterminada de la base de datos es habilitar el aislamiento de instantáneas de lectura confirmada (RCSI) al tener las opciones de base de datos READ_COMMITTED_SNAPSHOT y ALLOW_SNAPSHOT_ISOLATION configuradas en ON, obtenga más información sobre los niveles de aislamiento aquí . No puede cambiar el nivel de aislamiento predeterminado de la base de datos. Sin embargo, puede controlar el nivel de aislamiento explícitamente en una conexión.

En SQL Server local, el nivel de aislamiento predeterminado es Confirmado de lectura.

Encontrar el nivel de aislamiento "predeterminado" es un poco difícil. Dependerá de la base de datos desde donde se inicia una consulta, y si existen sugerencias en la consulta para anular una configuración de nivel de base de datos.

Dicho esto, puede consultar sys.databasespara averiguar si RCSI o SI está habilitado.

SELECT d.name, 
       d.is_read_committed_snapshot_on, 
       d.snapshot_isolation_state
FROM sys.databases AS d;

Tenga en cuenta que READ_COMMITTED_SNAPSHOTtécnicamente no es un nivel de aislamiento. Más bien, es una opción de base de datos que controla la implementación de modo que el control de versiones de fila en lugar del bloqueo se use para proporcionar consistencia de lectura para sesiones que usan el READ_COMMITTEDnivel de aislamiento.

Erik Darling
fuente