sql >> Base de Datos >  >> RDS >> Sqlserver

cómo detectar el tiempo de espera del servidor sql desde la aplicación .NET sin usar catch Exception

No, en realidad no.

La forma estándar es usar try/catch y manejar SqlException Número 1205 (víctima de interbloqueo) y vuelve a intentar tu consulta:

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

[Nota:las declaraciones de ruptura no se agregaron por compacidad

Tenga en cuenta también , muchos problemas de bloqueo se pueden eliminar proporcionando los índices de cobertura apropiados.