Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

jak wykryć przekroczenie limitu czasu serwera sql z aplikacji .NET bez użycia wyjątku catch

Nie, niezupełnie.

Standardowym sposobem jest użycie try/catch i obsłużyć SqlException Numer 1205 (ofiara impasu) i ponów zapytanie:

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

[Uwaga:instrukcje łamania nie zostały dodane dla zwartości

Pamiętaj też , wiele problemów z blokowaniem można wyeliminować, zapewniając odpowiednie indeksy pokrywające.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kodowanie SQL_Latin1_General_CP1_CI_AS do UTF-8

  2. Pobierasz aktualną datę w SQL Server?

  3. Refaktoryzacja ADO.NET - SqlTransaction a TransactionScope

  4. Zaktualizuj zapytanie w SQL Server przez JOINS

  5. Znajdź TYLKO wielkie litery w słowie za pomocą zapytania w SQL Server