Como detectar que READ_COMMITTED_SNAPSHOT está habilitado?
-
09-06-2019 - |
Pergunta
No MS SQL Server existe uma maneira de detectar se um banco de dados teve seu nível de isolamento definido através do comando T-SQL ALTER DATABASE <database> SET READ_COMMITTED_SNAPSHOT ON;
Não consigo encontrar uma maneira simples de detectar isso no T-SQL ou por meio da GUI do Management Studio.
TIA
Solução
SELECT is_read_committed_snapshot_on FROM sys.databases
WHERE name= 'YourDatabase'
Valor de retorno:
- 1:
READ_COMMITTED_SNAPSHOT
a opção é SOBRE.Leia as operações sob oREAD COMMITTED
O nível de isolamento é baseado em varreduras de instantâneos e não adquire bloqueios. - 0 (padrão):
READ_COMMITTED_SNAPSHOT
a opção é DESLIGADO.Leia as operações sob oREAD COMMITTED
uso de nível de isolamento Bloqueios compartilhados (S).
Outras dicas
Conforme https://msdn.microsoft.com/en-us/library/ms180065.aspx, "DBCC UserOptions Reports Um nível de isolamento de 'Snapshot de leitura comprometido' quando a opção de banco de dados read_committ_snapshot está definida como ativada e o nível de isolamento da transação é definido como 'leia comprometido'.O nível de isolamento real é confirmado para leitura."
Também no SQL Server Management Studio, nas propriedades do banco de dados em Opções-> Diversos, há o status da opção "Ler o instantâneo confirmado ativado"
Nem no SQL2005 nem em 2012 DBCC USEROPTIONS
mostrar 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