SqlCommandクエリのタイムアウトを変更しようとしています。特定の接続文字列の接続をテストするメソッドです。コードは次のようになります。CommandTimeoutが機能しない
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand("SELECT ...", connection);
cmd.CommandTimeout = 10;
connection.Open();
SqlDataReader reader = cmd.ExecuteReader();
...
connection.Close();
}
私はちょうどこの接続文字列が大丈夫かどうかをテストしたいので、私は、ここに短いタイムアウトを持っていると思います。 しかし、私がCommandTimeoutに何を設定しても(私は0,1,2,4,10,30,60,120を試しました)、私のダミー接続文字列のリアルタイムは常にほぼ同じです(合計実行時間は約15秒)。
CommandTimeoutで設定した値が何らかの理由で無視されているようです。
なぜでしょうか?
ないアイデアが、http://msdn.microsoft.com/en-us/library/systemでMSDNのDOCO。 data.sqlclient.sqlcommand.commandtimeout.aspxには、無視される理由がいくつか記載されています。 1つは非同期的に使用され、あなたの問題ではないBeginExecuteReaderを使用しています。しかし、もう1つは、コンテキスト接続(SqlConnectionが接続文字列で "context connection = true"で開かれている)に対してコマンドが実行されたときのタイムアウトを意味しません。接続文字列が原因であるかどうか確認してください。 –
はい、ドキュメントを数回チェックして、そこに何か不足していないことを確認しました。とにかく、非同期リーダーでもなく、接続文字列もありません。 –
質問には関係ありませんが、 "使用中"のブロックを利用しているので、connection.Close()を使用する必要はありません。使用ブロックのスコープの終わりとして自動的に閉じて接続を終了します。 – dotnetguy