Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

como detectar o tempo limite do servidor sql do aplicativo .NET sem usar catch Exception


Não, na verdade não.

A maneira padrão é usar try/catch e manipular SqlException Número 1205 (vítima de deadlock) e tente novamente sua 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:instruções break não adicionadas para compactação

Observe também , muitos problemas de bloqueio podem ser eliminados fornecendo os índices de cobertura apropriados.