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

hvordan man opdager sql server timeout fra .NET applikation uden at bruge catch Exception

Nej, egentlig ikke.

Standardmåden er at bruge try/catch og håndtere SqlException Nummer 1205 (deadlock offer), og prøv din forespørgsel igen:

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

[Bemærk:break statements ikke tilføjet for kompakthed

Bemærk også , kan mange låseproblemer elimineres ved at levere de passende dækkende indekser.



  1. QUARTER() Eksempler – MySQL

  2. Hvordan forespørger man enkelt og effektivt efter indlejrede relationer i SQL?

  3. Mysql dynamisk trigger oprettelse i lagret procedure

  4. Menu på flere niveauer med PHP/MySQL