Sintomas
Considere o seguinte cenário no Microsoft SQL Server Compact 3,5:
-
Você tem duas transações de isolamento serializável.
-
Ambas as transações tentam executar uma operação DML (Query/DML) na mesma tabela que contém uma dica de bloqueio TABLOCK ou uma dica XLOCK de bloqueio.
Nesse cenário, você encontra um deadlock.
Causa
Esse problema ocorre porque ambas as transações esperam por uma da outra para XLOCK. Quando a consulta é compilada, as duas transações obtêm o bloqueio compartilhado na tabela e, em seguida, mantêm o bloqueio para o isolamento serializável. Quando ambas as transações tentam executar uma execução, a consulta na mesma tabela que contém uma dica de bloqueio XLOCK, ambas as transações esperam uma da outra para XLOCK. Portanto, um deadlock ocorre.ObservaçãoEsse problema também ocorre quando ambas as transações executam uma operação DML na mesma tabela que contém uma dica de bloqueio TABLOCK.
Resolução
SQL Server Compact 3,5 Service Pack 2
A correção para esse problema foi lançada pela primeira vez na atualização cumulativa 2. Para obter mais informações sobre como obter este pacote de atualização cumulativa do SQL Server 2008 R2, clique no número abaixo para ler o artigo na base de dados de conhecimento da Microsoft:
2289547 Atualização cumulativa 2 para SQL Server Compact 3,5 Service Pack 2
Status
A Microsoft confirmou que este é um problema nos produtos Microsoft listados na seção "Aplicável a".
Informações adicionais
Para obter mais informações sobre deadlocks, acesse o seguinte site da Microsoft Developer Network (MSDN):
LisaPara obter mais informações sobre DML, acesse o seguinte website da MSDN:
DMLPara obter informações adicionais sobre a terminologia da atualização de segurança, clique no número abaixo para ler o artigo na Base de Dados de Conhecimento Microsoft (a página pode estar em inglês):
824684 Descrição da terminologia padrão utilizada para descrever as atualizações de software da Microsoft