私は、21行のデータ(4列)で構成されているSqlDataAdapterを持っています。それを駆動するsprocはSQL Mgmt Studioで数秒で復帰しますが、.Fill()には5分かかります。SqlDataAdapter.Fill()タイムアウト - 基盤となるSprocはすぐに返されます
ArrayList ret = new ArrayList();
SqlDataAdapter da = null;
SqlCommand cmd = null;
cmd = base.GetStoredProc("usp_dsp_Stuff"); //Returns immediately in MSSMS.
cmd.CommandTimeout = 3600; // Set to 6 min - debug only
base.AddParameter(ref cmd, "@Param1", ParameterDirection.Input, SqlDbType.BigInt, 8, 19, 0, theParam1);
base.AddParameter(ref cmd, "@Param2", ParameterDirection.Input, SqlDbType.BigInt, 8, 19, 0, theParam2);
base.AddParameter(ref cmd, "@Param3", ParameterDirection.Input, SqlDbType.Char, 1, 'C');
da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt); //Takes 5 minutes.
ありがとうございます! -Chris
これは私にとってもうまくいきました。テーブル値関数から10個のレコードを抜いてもタイムアウトしました。 – Sergey
私は同じ問題をクエリを実行していましたが、 "WITH(NOLOCK)"を使用すると助けになりませんでした。クエリの最後に "OPTION(RECOMPILE)"を追加すると問題が解決しました。 – sharpguru