Como posso ver bloqueios compartilhados? É por causa de chaves estrangeiras?
Sim. O SQL Server reverte para a implementação de bloqueio do nível de isolamento confirmado pela leitura ao acessar uma tabela com a finalidade de validar restrições de chave estrangeira. Isso é necessário para correção , e não pode ser desativado.
O comportamento se aplica apenas a instruções de modificação de dados. Bloqueios compartilhados são realizados apenas ao verificar os dados relacionados à chave estrangeira. Outros acessos a dados no mesmo plano de execução podem continuar usando o controle de versão de linha.
Se o SQL Server não fizer isso, as instruções de modificação de dados RCSI
poderão acabar violando a restrição de chave estrangeira, porque a verificação de integridade usava dados desatualizados (com versão).
Infelizmente, atualmente não há uma maneira suportada de ver essa alteração no comportamento de bloqueio em um plano de execução. É possível ver as dicas de travamento interno quando o sinalizador de rastreamento 8607 está ativo.