Partilhar via


MSSQLSERVER_1205

Detalhes

Nome do produto

SQL Server

Versão do produto

10.0

Número da compilação do produto

10.00.0000.00

ID do evento

1205

Origem do evento

MSSQLSERVER

Componente

SQLEngine

Nome simbólico

LK_VICTIM

Texto da mensagem

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. Execute a transação novamente.

Explicação

Os recursos foram acessados em ordem conflitante em transações separadas, causando um deadlock. Por exemplo:

  • A Transação1 atualiza a Table1.Row1, enquanto a Transação2 atualiza a Table2.Row2.

  • A Transação1 tenta atualizar a Table2.Row2 mas é bloqueada porque a Transação2 ainda não foi confirmada.

  • A Transação2 agora tenta atualizar a Table1.Row1 mas é bloqueada porque a Transação1 ainda não foi confirmada.

  • 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.

O sistema detectará esse deadlock, escolherá uma das transações envolvidas como 'vítima', emitirá essa mensagem e reverterá a transação da vítima. Para obter mais informações sobre deadlocks, consulte Deadlock.

Ação do usuário

Execute a transação novamente. Você também pode revisar o aplicativo para evitar 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.

Para impedir ou evitar a ocorrência de deadlocks, considere fazer com que todas as transações acessem as linhas na mesma ordem (Table1 e depois Table2). Desse modo, embora um bloqueio possa ocorrer, não haverá um deadlock. Para obter mais informações sobre as ações a serem tomadas, consulte Detectando e encerrando deadlocks.