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

Foi útil?

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 o READ 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 o READ COMMITTED uso de nível de isolamento Bloqueios compartilhados (S).

Outras dicas

  1. 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."

  2. 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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top