Tenho acesso a um banco de dados em modo read uncommitted e preciso fazer manutenção em uma tabela em ambiente operativo. Preciso adquirir um cadeado exclusivo em uma mesa, fazer um trabalho e depois liberar o cadeado.
Durante essa manutenção, mesmo as consultas de leitura não devem obter dados não confirmados de volta.
Esta pergunta e resposta parece promissora. Eu faço:
begin transaction;
SELECT TOP (1) 1 FROM a WITH (TABLOCK);
mas então, um SIX
bloqueio é adquirido na tabela a
. No entanto, isso não bloqueia a tabela de consultas selecionadas. Como posso adquirir Sch-M
o bloqueio na mesa? No máximo consigo o Sch-S
cadeado com:
SELECT TOP (1) * FROM a WITH (TABLOCK);
isso ainda não bloqueia consultas selecionadas na tabela.