Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да получите ефективно управление на блокиране на Sql Server в C# с ADO?

Първо, бих прегледал моя SQL 2000 код и бих стигнал до дъното на това защо се случва тази задънена улица. Коригирането на това може да крие по-голям проблем (напр. липсващ индекс или лоша заявка).

Второ, бих прегледал архитектурата си, за да потвърдя, че изявлението за блокиране наистина трябва да се извиква толкова често (select count(*) from bob трябва да се обажда 100 пъти в секунда?).

Въпреки това, ако наистина се нуждаете от подкрепа за блокиране и нямате грешки във вашия SQL или архитектура, опитайте нещо по следните редове. (Забележка:трябваше да използвам тази техника за система, поддържаща хиляди заявки в секунда и доста рядко бих попадала в задънена улица)

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. YEAR() Примери в SQL Server (T-SQL)

  2. Код за валидиране на SQL скриптове

  3. Условно ли е MS-SQL И/ИЛИ (извършване на оценка на късо съединение)?

  4. Как мога да видя всички разрешени специални знаци в полето varchar или char в SQL Server?

  5. Как да инсталирате SQL Server на Linux