Disseram-me que se sua transação consistir em múltiplas instruções, então o SNAPSHOT
nível de isolamento da transação é a única maneira de garantir visualizações de dados consistentes em um determinado momento. Por que o nível de isolamento da transação é SERIALIZABLE
inadequado para esta tarefa? Por design, as travas que SERIALIZABLE
prendem são muito apertadas.
Acho que a lacuna no meu entendimento é que não tenho certeza de quando SERIALIZABLE
isso acontece. Um script como o abaixo provavelmente será muito útil para encontrar o que estou perdendo.
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
BEGIN TRANSACTION;
SELECT TOP (1) * FROM [Hit_Me_First];
WAITFOR DELAY '00:02:00';
SELECT TOP (1) * FROM [Hit_Me_Second];
COMMIT;