sql >> Databáze >  >> RDS >> Sqlserver

Jak získat efektivní řešení zablokování SQL Serveru v C# pomocí ADO?

Nejprve bych zkontroloval svůj kód SQL 2000 a dostal se na dno, proč k tomuto zablokování dochází. Oprava tohoto může skrývat větší problém (např. chybějící index nebo špatný dotaz).

Za druhé bych zkontroloval svou architekturu, abych potvrdil, že příkaz k zablokování je skutečně potřeba volat tak často (select count(*) from bob musí být voláno 100krát za sekundu?).

Pokud však opravdu potřebujete podporu uvíznutí a nemáte žádné chyby ve svém SQL nebo architektuře, zkuste něco v následujících řádcích. (Poznámka:Tuto techniku ​​jsem musel použít pro systém podporující tisíce dotazů za sekundu a uvízl jsem jen zřídka)

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. Spuštění balíčku SSIS pomocí dtexec

  2. zachytit výjimku DB v aplikaci JSF+EJB

  3. ORA-16789:Protokoly opakování v pohotovostním režimu jsou nakonfigurovány nesprávně

  4. Jak převést pole json na řádky v postgresu