sql >> Database teknologi >  >> RDS >> Sqlserver

Hvordan får man effektiv Sql Server-deadlock-håndtering i C# med ADO?

Først ville jeg gennemgå min SQL 2000-kode og komme til bunds i, hvorfor denne dødvande sker. At rette dette kan skjule et større problem (f.eks. manglende indeks eller dårlig forespørgsel).

For det andet ville jeg gennemgå min arkitektur for at bekræfte, at deadlocking-sætningen virkelig skal kaldes det ofte (Vælger select count(*) from bob skal ringes op 100 gange i sekundet?).

Men hvis du virkelig har brug for en deadlock-support og ikke har nogen fejl i din SQL eller arkitektur, prøv noget på følgende måde. (Bemærk:Jeg har været nødt til at bruge denne teknik til et system, der understøtter tusindvis af forespørgsler i sekundet og ville ramme dødvande ret sjældent)

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;
  }
}


  1. Hvordan laver jeg databasetransaktioner med psycopg2/python db api?

  2. Alt du behøver at vide om LIKE Operator i SQL

  3. iPhone humørikoner indsættes i MySQL, men bliver tom værdi

  4. Kontroller, at tabellen eksisterer eller ej, før du opretter den i Oracle