ESTAMOS em uma situação em que um select está sendo bloqueado por uma atualização. mas as tabelas são diferentes.
UPDATE [dbo].[TABLE_1]
SET ...
SELECT [t1].[field]
FROM [dbo].[TABLE_1] AS [t1]
WHERE...
Este processo simples está bloqueando este quando eles são executados ao mesmo tempo:
SELECT "A lot of fields"
FROM TABLE_TOTALLY_DIFFERENT
INNER JOIN [another table totally different]
ON...
WHERE...
Isso não faz sentido para mim.
Eu posso ver mesmo olhando para o pageID que a tabela que está sendo bloqueada nessa situação é o arquivo TABLE_TOTALLY_DIFFERENT
.
mas eles não têm nada a ver com eles.
Como posso buscar e identificar o motivo do bloqueio?
Existem várias opções, e você deve encontrar o link entre as tabelas.
Verifique se há referências ocultas:
Os bloqueios
TABLE_TOTALLY_DIFFERENT
podem ter sido obtidos em uma instrução diferente que faz parte de uma transação maior eUPDATE TABLE_1
é apenas a instrução mais recente que aparece no block_process_report .Existe outra opção. Você tem uma exibição indexada que combina essas tabelas não relacionadas
Eu blog sobre este caso específico aqui https://straightforwardsql.com/posts/is-lock-in-rcsi-enabled-database/
Aqui está um código de como verificar isso