Primeiro, eu revisaria meu código SQL 2000 e entenderia por que esse impasse está acontecendo. Corrigir isso pode estar escondendo um problema maior (por exemplo, índice ausente ou consulta incorreta).
Em segundo lugar, eu revisaria minha arquitetura para confirmar que a instrução de deadlock realmente precisa ser chamada com frequência (
select count(*) from bob
tem que ser chamado 100 vezes por segundo?). No entanto, se você realmente precisar de algum suporte a deadlock e não tiver erros em seu SQL ou arquitetura, tente algo ao longo das linhas a seguir. (Nota:eu tive que usar essa técnica para um sistema que suporta milhares de consultas por segundo e raramente atingia deadlocks)
int retryCount = 3;
bool success = false;
while (retryCount > 0 && !success)
{
try
{
// your sql here
success = true;
}
catch (SqlException exception)
{
if (exception.Number != 1205)
{
// a sql exception that is not a deadlock
throw;
}
// Add delay here if you wish.
retryCount--;
if (retryCount == 0) throw;
}
}