¿Cómo detectar READ_COMMITTED_SNAPSHOT está habilitado?

130

En MS SQL Server, hay una manera de detectar si una base de datos ha establecido su nivel de aislamiento mediante el comando T-SQL ALTER DATABASE <database> SET READ_COMMITTED_SNAPSHOT ON;

No puedo encontrar una manera simple de detectar esto en T-SQL o mediante la GUI de Management Studio.

TIA

Chris Driver
fuente

Respuestas:

194
SELECT is_read_committed_snapshot_on FROM sys.databases 
WHERE name= 'YourDatabase'

Valor de retorno:

  • 1 : la READ_COMMITTED_SNAPSHOTopción está activada . Las operaciones de lectura bajo el READ COMMITTEDnivel de aislamiento se basan en escaneos de instantáneas y no adquieren bloqueos.
  • 0 (predeterminado): la READ_COMMITTED_SNAPSHOTopción está DESACTIVADA . Las operaciones de lectura bajo el READ COMMITTEDnivel de aislamiento usan bloqueos compartidos (S) .
Galés
fuente
77
Me gusta "DBCC USEROPTIONS", un poco más fácil de recordar.
ProVega
55
@ProVega - DBCC USEROPTIONS no devuelve el valor de is_read_committed_snapshot_on.
Carsten Schütte
3
  1. Según https://msdn.microsoft.com/en-us/library/ms180065.aspx , "DBCC USEROPTIONS informa un nivel de aislamiento de 'lectura de confirmación de instantánea' cuando la opción de base de datos READ_COMMITTED_SNAPSHOT se establece en ON y el nivel de aislamiento de la transacción es ON establecido en 'lectura confirmada'. El nivel de aislamiento real es lectura confirmada ".

  2. También en SQL Server Management Studio, en las propiedades de la base de datos en Opciones-> Varios hay un estado de opción "Se lee la confirmación de confirmación de activación"

MikeL
fuente
1

Ni en SQL2005 ni 2012 DBCC USEROPTIONSmuestra is_read_committed_snapshot_on:

Set Option  Value
textsize    2147483647
language    us_english
dateformat  mdy
datefirst   7
lock_timeout    -1
quoted_identifier   SET
arithabort  SET
ansi_null_dflt_on   SET
ansi_warnings   SET
ansi_padding    SET
ansi_nulls  SET
concat_null_yields_null SET
isolation level read committed
usuario3164106
fuente
66
Intente leer este stackoverflow.com/about para obtener más información sobre las preguntas / respuestas aquí en SO. Su contribución no responde la pregunta. Es más un comentario, que puede agregar una vez que aumente su reputación: stackoverflow.com/faq#reputation
Radim Köhler
1
La respuesta está bien, ya que trata de responder la pregunta "¿hay alguna manera?". Pero solo decir lo que no funciona no tendrá mucha aceptación.
Christian Strempfer
44
El nivel de aislamiento en DBCC USEROPTIONSsí te dice. Si es read committed snapshotasí, está encendido, de lo contrario está apagado
Greg
@Greg: la lectura de confirmación de lectura se establece en el nivel de la base de datos, no en el nivel de conexión del usuario. DBCC USEROPTIONS no le dirá si está activado o desactivado.
JasonS