SQL Server 2005: Transação Impasse
-
22-07-2019 - |
Pergunta
Estou recebendo este erro muito frequentemente, mas não de forma consistente em 2 páginas em um aplicativo que está em um ambiente de produção. Eu só tenho algumas capturas de tela do erro abaixo.
Transaction (ID do Processo XX) foi bloqueada no bloqueio | comunicação tampão recursos com outro processo e foi escolhido como vítima de impasse. Execute novamente a transação.
O que a abordagem seja para resolver esse erro. O servidor db é SQL Server 2005.
Solução
Aqui é a bíblia sobre solução de problemas de impasse:
http: // blogs. msdn.com/bartd/archive/2006/09/09/Deadlock-Troubleshooting_2C00_-Part-1.aspx
Outras dicas
Este artigo por Brad McGehee é um bom lugar para começar.
Veja também aqui: Proactive Impasse Notificações
Você precisa executar um rastreamento perfil impasse enquanto os erros estão ocorrendo. O artigo por Brad McGehee é uma visão. Você precisa identificar os dois processos ofensivos. Depois disso, rever o código nas duas páginas para ver o que comandos SQL estão sendo emitidos e como frequentemente. Na maioria das vezes, eu descobri que simplesmente rever o código SQL sendo executado e saber quantas vezes ele é executado irá identificar rapidamente o conflito. Corrigi-lo, por vezes, leva mais tempo ...
Você poderia fazer como a mensagem de erro sugere e obter o programa para tentar novamente a transação!
Depende muito de como "atômica" a transação for embora! ou seja, se você estava num impasse sua likly que algum outro processo tem atualizado com sucesso a linha que você está interessado. Será que ainda faz sentido para aplicar a atualização para a linha em circunstâncias htese?
No mínimo presente ao usuário uma mensagem de erro mais agradável ( "Outro usuário mudou a xxxx você estava tentando atualização. Por favor, reveja os novos valores e tente novamente.)