1

SQLServerデータベースを呼び出す特定のアセンブリを参照する.NETWindowsサービスがあります。これらのSQL呼び出しの接続文字列は、ConfigurationManager.ConnectionStrings["myconnection"]から取得するようにコーディングされています。

サービスのインストールディレクトリに、接続文字列「myconnection」を含む構成ファイルがありますが、元々接続タイムアウト値がなく、長時間実行されるクエリが30秒後にタイムアウトしました。ただし、接続文字列に「Connection Timeout = 300」を追加してサービスを再起動しても、違いはわかりません。

編集:commandtimeoutプロパティは300に設定されています。以下の例:

SqlCommand _command     = new SqlCommand(Sql, _con);
            SqlDataReader _DR       = _command.ExecuteReader();
            _command.CommandTimeout = 300;
            string _fieldValue;
            string _columnValue;

            while (_DR.Read()){ ... }
4

1 に答える 1

3

SqlCommand.CommandTimeoutをより高い値に設定する必要があります。

SqlCommand.CommandTimeoutは、単一のSQLコマンドにかかる時間であり、 SqlConnection.ConnectionTimeout、SQLサーバーへの接続を確立するのにかかる時間です。

SqlCommand.CommandTimeoutを構成ファイルから設定できるとは思いません。SqlCommand自体の各インスタンスで設定する必要があります。

于 2012-09-26T15:42:14.950 に答える