よく対処方法を忘れているのでメモ。「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;
}
}
Comments