MSSQLSERVER_1205MSSQLSERVER_1205

Aplica-se a:Applies to: simSQL ServerSQL Server (todas as versões compatíveis) yesSQL ServerSQL Server (all supported versions) Aplica-se a:Applies to: simSQL ServerSQL Server (todas as versões compatíveis) yesSQL ServerSQL Server (all supported versions)

DetalhesDetails

AtributoAttribute ValorValue
Nome do ProdutoProduct Name SQL ServerSQL Server
ID do eventoEvent ID 12051205
Origem do EventoEvent Source MSSQLSERVERMSSQLSERVER
ComponenteComponent SQLEngineSQLEngine
Nome simbólicoSymbolic Name LK_VICTIMLK_VICTIM
Texto da mensagemMessage Text A transação (ID do processo %d) entrou em deadlock em %.*ls recursos com outro processo e foi escolhida como a vítima do deadlock.Transaction (Process ID %d) was deadlocked on %.*ls resources with another process and has been chosen as the deadlock victim. Execute a transação novamente.Rerun the transaction.

ExplicaçãoExplanation

Os recursos podem ser acessados em ordem conflitante em transações separadas, causando um deadlock.Resources are accessed in conflicting order on separate transactions, causing a deadlock. Por exemplo:For example:

  • Transaction1 atualiza Table1.Row1, enquanto Transaction2 atualiza Table2.Row2.Transaction1 updates Table1.Row1, while Transaction2 updates Table2.Row2.

  • Transaction1 tenta atualizar Table2.Row2, mas é bloqueada, porque Transaction2 ainda não foi confirmada.Transaction1 tries to update Table2.Row2 but is blocked because Transaction2 has not yet committed.

  • Transaction2 agora tenta atualizar Table1.Row1, mas é bloqueada porque Transaction1 ainda não foi confirmada.Transaction2 now tries to update Table1.Row1 but is blocked because Transaction1 has not committed.

  • Um deadlock acontece porque a Transação1 está esperando a conclusão da Transação2, mas a Transação2 está esperando a conclusão da Transação1.A deadlock occurs because Transaction1 is waiting for Transaction2 to complete, but Transaction2 is waiting for Transaction1 to complete.

O sistema detecta o deadlock, escolhe uma das transações envolvidas como 'vítima' e emite a mensagem, revertendo a transação da vítima.The system will detect this deadlock and will choose one of the transactions involved as a 'victim' and will issue this message, rolling back the victim's transaction.

Ação do usuárioUser Action

Execute a transação novamente.Execute the transaction again. Você também pode revisar o aplicativo para evitar deadlocks.You can also revise the application to avoid deadlocks. A transação escolhida como vítima pode ser testada novamente e, provavelmente, terá êxito, dependendo de quais operações estiverem sendo executadas simultaneamente.The transaction that was chosen as a victim can be retried and will likely succeed, depending on what operations are being executed simultaneously.

Para impedir ou evitar a ocorrência de deadlocks, faça com que todas as transações acessem as linhas na mesma ordem (Table1 e, depois, Table2); desse modo, embora possa acontecer um bloqueio, não ocorrerá um deadlock.To prevent or avoid deadlocks from occurring, consider having all transactions access rows in the same order (Table1, then Table2); this way, although blocking might occur, a deadlock will not occur.