2

SqlClient.SqlCommand オブジェクトを使用して、データベースでいくつかのストアド プロシージャを実行しています。通常、Query Analyzer を使用してこれらを手動で実行すると、完了するまでに最大 15 分かかります。

したがって、明らかに SqlCommand オブジェクトを使用してそれらを実行すると、SqlCommand タイムアウトが発生します。

タイムアウト プロパティを非常に高い数値に設定できることはわかっていますが、代わりに、プロシージャをキックオフして切断する方法があるかどうか疑問に思っています。戻り値は必要ありません。

助言がありますか?ここでは、各 sp の処理時間を最適化することには興味がありません。「設定して忘れる」オプションがあるかどうかを判断しようとしているだけです。

SqlCommand オブジェクトの内容は次のとおりです。

using (SqlCommand cmd = new SqlCommand(@"update tbl_SYS_DATE set RPT_DATE = @inputDate
                                                    exec sp_Get_Bp_Data1
                                                    exec sp_Get_Bp_Data2          
                                                    exec sp_Get_Bp_Data3
                                                    exec sp_channel_data1
                                                    exec sp_channel_data2
                                                    exec sp_channel_data3
                                                    ", con))
4

3 に答える 3

5

BeginExecuteNonQuery などの非同期メソッドを使用できます。そのため、タイムアウトは無視されます。

于 2009-10-29T15:11:58.770 に答える
4

非同期メソッド呼び出し BeginExecuteNonQuery を使用します。MSDNページから

CommandTimeout プロパティは、BeginExecuteReader などの非同期メソッド呼び出し中は無視されます。

于 2009-10-29T15:12:20.737 に答える
0

バックグラウンド スレッドからそのコードを実行できます。BackgroundWorkerオブジェクトを調べることができます。

于 2009-10-29T15:11:46.047 に答える