Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

comment détecter le délai d'attente du serveur sql à partir de l'application .NET sans utiliser catch Exception

Non, pas vraiment.

La méthode standard consiste à utiliser try/catch et gérer SqlException Numéro 1205 (victime d'un blocage), et relancez votre requête :

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

[Remarque :instructions de rupture non ajoutées pour des raisons de compacité

Remarque également , de nombreux problèmes de verrouillage peuvent être éliminés en fournissant les index de couverture appropriés.