Localizando o nível de isolamento padrão no SQL Server 2017 e no DB SQL do Azure

9

Estou lendo um livro relacionado a transações e concorrência. Em um parágrafo, é mencionado que:

  • Na instância local do SQL Server, o nível de isolamento padrão é Confirmado pela Leitura com base no bloqueio

E a próxima frase é:

  • O padrão no banco de dados SQL é leitura - captura instantânea confirmada com base no controle de versão de linha

Minha pergunta é: qual é a diferença entre "Instância local do SQL Server" e "Banco de dados SQL" nessas duas frases?

Qual é o nível de isolamento padrão e como posso encontrá-lo? Existe alguma consulta especial para descobrir o nível de isolamento padrão?

Erik Darling
fonte

Respostas:

13

Refere-se ao Banco de Dados SQL do Azure, que usa o RCSI por padrão .

SQL de nível de isolamento

A configuração padrão do banco de dados em todo o banco de dados é ativar o isolamento de captura instantânea confirmada por leitura (RCSI), tendo as opções de banco de dados READ_COMMITTED_SNAPSHOT e ALLOW_SNAPSHOT_ISOLATION definidas como LIGADO, para saber mais sobre os níveis de isolamento aqui . Você não pode alterar o nível de isolamento padrão do banco de dados. No entanto, você pode controlar explicitamente o nível de isolamento em uma conexão.

No SQL Server local, o nível de isolamento padrão é Leitura Confirmada.

Encontrar o nível de isolamento "padrão" é um pouco complicado. Isso dependerá do banco de dados de onde uma consulta é iniciada e se houver alguma dica na consulta para substituir uma configuração no nível do banco de dados.

Dito isto, você pode consultar sys.databasespara descobrir se o RCSI ou o SI está ativado.

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

Observe que READ_COMMITTED_SNAPSHOTtecnicamente não é um nível de isolamento. Em vez disso, é uma opção de banco de dados que controla a implementação, para que o controle de versão de linha, em vez do bloqueio, seja usado para fornecer consistência de leitura para sessões usando o READ_COMMITTEDnível de isolamento.

Erik Darling
fonte