- PR -

ADO.NET の CommandTimeout について

1
投稿者投稿内容
うむむ
会議室デビュー日: 2004/03/25
投稿数: 12
投稿日時: 2006-11-07 14:22
お世話になります。
VB.NET + SQL Server 2000 です。

下記の現象が出ており、どうしてこのような挙動になるのかわからないので
アドバイスをお願いします。

sql = "SELECT * FROM TEST_TABLE"
cmd = New SqlCommand(sql, db.con)
cmd.CommandTimeout = 0

da = New SqlDataAdapter(cmd)
ds = New DataSet
da.Fill(ds, "test_table")

このようなコードがありますが、da.Fill(ds, "test_table") の部分で
タイムアウトします。

cmd.CommandTimeout = 0 と設定してあるので、無制限に待つのかと思いきや
da.Fill を実行してすぐ(1、2秒で)タイムアウトの例外となってしまいます。
その SQL を クエリアナライザで実行したところ、1、2秒程度で応答がある程度の
レコード件数です。

ここで、

cmd.CommandTimeout = 600

のように、明示的に大きな値を設定したところ、問題なく動作するように
なりました。

CommandTimeout の説明には、
[0 は、制限なしを示します。ただし、コマンド実行の試行が永久的に待機されるため、CommandTimeout では使用しないでください。]

とありますが、上記のコードでは上述の通り、すぐにタイムアウトし、
値を設定した場合は、正常に処理が実行されました。

この挙動について理解できずにおります、何か勘違いをしておりますでしょうか?

アドバイスを頂けますと幸いです、よろしくお願い致します。
1

スキルアップ/キャリアアップ(JOB@IT)