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

как да откриете изчакване на sql сървъра от .NET приложение, без да използвате catch Exception

Не, всъщност не.

Стандартният начин е да използвате try/catch и обработва SqlException Номер 1205 (жертва на блокиране) и опитайте отново заявката си:

    try
    {
        // do stuff...
    }
    catch (SqlException sqlEx)
    {
        switch (sqlEx.Number)
        {
            case -2:   // Client Timeout
            case 701:  // Out of Memory
            case 1204: // Lock Issue 

            case 1205: // >>> Deadlock Victim
                // handle deadlock
                break;

            case 1222: // Lock Request Timeout
            case 2627: // Primary Key Violation
            case 8645: // Timeout waiting for memory resource 
            case 8651: // Low memory condition 
            ...
        }
    }

[Забележка:операторите за прекъсване не са добавени за компактност

Отбележете също , много проблеми със заключването могат да бъдат елиминирани чрез осигуряване на подходящи покриващи индекси.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да конвертирате редове в колони в SQL Server?

  2. Псевдоним на кръстосана база данни на SQL Server

  3. Какво е съхранена процедура?

  4. Преобразувайте „datetime“ в „time“ в SQL Server (T-SQL примери)

  5. Отстраняване на проблеми при работа с дата и час в SQL Server