MSSQLSERVER_1205
Detalhes
Nome do produto |
SQL Server |
Versão do produto |
10.50 |
Número da compilação do produto |
10.50.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, convém fazer 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. Para obter mais informações sobre as medidas a serem tomadas, consulte Detectando e encerrando deadlocks.