0

その要点は次のとおりです。

このスクリプトは、パフォーマンス テストを実行するまでまったく問題がありませんでしたが、実行しようとすると、デバッグ中に常に同じエラーが表示されます。

using (OracleConnection con = new OracleConnection())
{
             //Connect to OracleDB and retreive the first valid, unused SRVID//
            con.ConnectionString = @"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=myhostip)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=MyServerNAme)));User Id=MyUSer;Password=MyPAssword";
            OracleCommand command = new OracleCommand("SELECT MASK_GUID(SWAP_GUID(SRVID)) FROM  MYTable WHERE USED=0 AND ROWNUM = 1", con);
            con.Open();
            OracleDataReader reader = command.ExecuteReader();
            reader.Read();
            ServerID = reader.GetString(0);
            reader.Close();
             //update SRVID in DB as used so further users will not select it
            command.CommandText = "UPDATE MyTable SET USED=1 WHERE SRVID = FIX_GUID('"+ ServerID+"')";
            command.Connection = con;
             command.ExecuteNonQuery();
             reader.Close();
             reader.Dispose();
       con.Close();
       con.Dispose();
}

それがコードです。ここで問題が発生します。

  1. オブジェクトエラーの現在の状態によりServerID= reader.GetString(0)、操作が有効ではありません。デバッグでリーダーを詳しく調べると、エラーを説明する可能性のあるデータ行がないことがわかります(しかし、それは...につながります)

  2. クエリは問題ありません。データベースでローカルに実行すると、有効な値が返されます(念のためにコピーして貼り付けました)。これが、リーダーにデータがない理由ではありません。

  3. この問題は、このエラーが常に発生する前に、このスクリプトを約 800 回実行したパフォーマンス テスト中に発生しました... 私がテストしたシステムは、同じデータベースへのアクセスを必要とするアクションを実行している場合でも、正常に動作します。

デバッガーは、このケースに関して他のエラーを表示しません...または、その点についてはまったく。

アイデア?

4

1 に答える 1