質問

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))
役に立ちましたか?

解決

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

他のヒント

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

  

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top