まず、SQL 2000コードを確認し、このデッドロックが発生している理由を突き止めます。これを修正すると、より大きな問題が隠れている可能性があります(たとえば、インデックスの欠落やクエリの不良)。
次に、アーキテクチャを確認して、デッドロックステートメントを本当に頻繁に呼び出す必要があることを確認します(select count(*) from bob
1秒間に100回呼び出す必要がありますか?)
ただし、デッドロックのサポートが本当に必要で、SQLまたはアーキテクチャにエラーがない場合は、次の手順に従って試してください。 (注:1秒あたり数千のクエリをサポートするシステムではこの手法を使用する必要があり、デッドロックが発生することはめったにありません)
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;
}
}