sql >> データベース >  >> RDS >> Sqlserver

catch Exceptionを使用せずに.NETアプリケーションからSQLサーバーのタイムアウトを検出する方法

    いいえ、そうではありません。

    標準的な方法は try/catch を使用することです SqlException を処理します 番号 1205 (デッドロックの犠牲者)、クエリを再試行してください:

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

    [注:簡潔にするために break ステートメントは追加されていません

    注意 、多くのロックの問題は、適切なカバー インデックスを提供することで排除できます。



    1. 数の除算の正確な結果を取得します

    2. MySQLデータベースをGlassfishクラスパスに接続していないか、クラス名が間違っています

    3. MySQLは、あるデータベースから別のデータベースに挿入します

    4. MySQLエラー1449:定義者として指定されたユーザーが存在しません