Estou executando esta consulta,
SELECT name
, snapshot_isolation_state
, is_read_committed_snapshot_on
FROM sys.databases s
name snapshot_isolation_state is_read_committed_snapshot_on
master 1 0
tempdb 0 0
model 0 0
msdb 1 0
MyDB1 1 1
MyDB2 1 1
MyDB1 e MyDB2 estão habilitados para instantâneo, mas ainda todas as minhas consultas do Entity Framework estão usando,
select transaction_isolation_level from sys.dm_exec_requests
Todos os valores das sessões são transaction_isolation_level=2
o que significa Read Committed
. O que posso fazer?
Como ambos
MyDB1
eMyDB2
têmREAD_COMMITTED_SNAPSHOT ON
, as consultas que usam oREAD COMMITTED
nível de isolamento usarão controle de versão de linha em vez de bloqueio para consistência de leitura. Esse comportamento é semelhante aoSNAPSHOT
nível de isolamento, exceto no nível da instrução, e não no nível da transação. Nenhuma ação é necessária de sua parte se esse for o comportamento desejado.Não é possível determinar a partir do
transaction_isolation_level
valor relatadosys.dm_exec_requests
se umREAD COMMITTED
nível de isolamento usa controle de versão ou bloqueio de linha.A
ALLOW_SNAPSHOT_ISOLATION
opção de banco de dados não está relacionadaREAD_COMMITTED_SNAPSHOT
e pode ser alternada independentemente.ALLOW_SNAPSHOT_ISOLATION
só precisa ser definido quando você deseja usar oSNAPSHOT
nível de isolamento de transação com umSET TRANSACTION ISOLATION LEVEL SNAPSHOT
.