Sintomas

Considere o seguinte cenário:

  • Você tem um banco de dados com as opções ALLOW_SNAPSHOT_ISOLATION e READ_COMMITTED_SNAPSHOT habilitados no Microsoft SQL Server 2008 R2.

  • Você executa uma instrução Select que contém dicas TABLOCK e UPDLOCK em relação a uma tabela no banco de dados.

  • A instrução Select é encapsulada em um BEGIN TRANexplícito, mas Commit Tran não é executada.

  • Duas mais das mesmas consultas que são iniciadas com as mesmas dicas de consulta estão na transação explícita.

Nesse cenário, quando a primeira consulta for confirmada, uma das outras consultas será deadlock.

Causa

O problema ocorre porque o SQL Server incorretamente informa o deadlock em um dos seguintes cenários:

  • Quando ALLOW_SNAPSHOT_ISOLATION e READ_COMMITTED_SNAPSHOT são habilitados para um banco de dados, várias consultas na mesma transação podem ser reportadas como travadas incorretamente quando uma delas é concluída.

  • Quando ALLOW_SNAPSHOT_ISOTION é habilitado e as dicas TABLOCK e UPDLOCK são usadas, a segunda e a terceira instrução Select tem a intenção de converter para X. O IX trava o deadlock para terminar quando uma tentativa de converter para X é feita.

  • Quando o ALLOW_SNAPSHOT_ISOLATION estiver desabilitado, a segunda e a terceira consulta obterá seis travas. Nessa situação, quando o SIX Lock é convertido em X, ele é apenas um cenário de bloqueio, não um deadlock.

Cada nova atualização cumulativa do SQL Server contém todos os hotfixes e todas as correções de segurança incluídas na atualização cumulativa anterior. Confira as atualizações cumulativas mais recentes do SQL Server:

Status

A Microsoft confirmou que este é um problema nos produtos Microsoft listados na seção "Aplicável a".

Precisa de mais ajuda?

Expanda suas habilidades

Explore o treinamento >

Obtenha novos recursos primeiro

Ingressar no Microsoft Insider >

Essas informações foram úteis?

Qual é o seu grau de satisfação com a qualidade do idioma?
O que afetou sua experiência?

Obrigado pelos seus comentários!

×