sql server - transaction - ¿Cómo detectar READ_COMMITTED_SNAPSHOT está habilitado?
transaction isolation level snapshot (3)
En MS SQL Server hay una manera de detectar si una base de datos ha tenido su nivel de aislamiento establecido a través del comando T-SQL ALTER DATABASE <database> SET READ_COMMITTED_SNAPSHOT ON;
No puedo encontrar una manera simple de detectar esto en T-SQL o a través de la GUI de Management Studio.
TIA
Según https://msdn.microsoft.com/en-us/library/ms180065.aspx , "DBCC USEROPTIONS informa un nivel de aislamiento de ''leer instantánea confirmada'' cuando la opción de base de datos READ_COMMITTED_SNAPSHOT está activada y el nivel de aislamiento de transacción es configurado para ''leer confirmado''. El nivel de aislamiento real se lee confirmado ".
También en SQL Server Management Studio, en las propiedades de la base de datos, en Opciones-> Varios, se muestra el estado de opción "¿Se ha confirmado la captura de imagen confirmada?"
Ni en SQL2005 ni 2012 DBCC USEROPTIONS
muestra 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
SELECT is_read_committed_snapshot_on FROM sys.databases
WHERE name= ''YourDatabase''
Valor de retorno:
- 1 : la opción
READ_COMMITTED_SNAPSHOT
está activada . Las operaciones de lectura bajo el nivel de aislamientoREAD COMMITTED
se basan en escaneos de instantáneas y no adquieren bloqueos. - 0 (predeterminado): la opción
READ_COMMITTED_SNAPSHOT
está desactivada . Las operaciones de lectura bajo el nivel de aislamientoREAD COMMITTED
utilizan bloqueos Compartidos (S) .