• Kawahara

AS400とのiDB2Connectionで接続時にSQL0666エラー(タイムアウト)

よく対処方法を忘れているのでメモ。「iDB2Connection SQL0666」で検索して辿りつくのはいつもここ。ありがとうございます。

接続文字列にタイムアウトを0(無制限)としても自動で30に変更されていまうから、コードで再設定する事で解決します。

ちなみにODBCの場合はAS400のデフォルトの設定値によって同様のエラーが発生する時パターンあり


public void TestFunction()
{
    try
    {
        using (iDB2Connection cn = new iDB2Connection("DataSource=AS400;USERID=FOO;PASSWORD=BAR;CONNECTION TIMEOUT=0;"))
        {
            cn.Open();

            using (iDB2Command cmd = cn.CreateCommand())
            {

                cmd.CommandText = "SELECT * FROM HURGETBL";
                cmd.CommandTimeout = 0; // ←ここが無いと接続文字列でTimeout=0と定義しても30で上書きされてエラーになる。

                iDB2DataReader dr = cmd.ExecuteReader();
                if (dr.HasRows)
                {
                    dr.Read();
                }
            }
            cn.Close();
        }
    }
    catch (Exception ex)
    {
        throw ex;
    }

}
0回の閲覧

© 2019 BY マルハチITサービス PROUDLY CREATED WITH Wix.com​