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.

Foi útil?

Solução

Outras dicas

Este artigo por Brad McGehee é um bom lugar para começar.

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top