2

我正在使用 SqlClient.SqlCommand 对象在我的数据库上运行一些存储的过程。通常,当我通过查询分析器手动运行它们时,它们最多需要 15 分钟才能完成。

所以很明显,当我使用 SqlCommand 对象运行它们时,我得到了 SqlCommand 超时。

我知道我可以将 timeout 属性设置为一个非常高的数字,但我想知道是否有一种方法可以启动 procs 并断开连接。我不需要返回值。

有什么建议么?我对优化这里每个 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 页面

在异步方法调用(例如 BeginExecuteReader)期间,CommandTimeout 属性将被忽略。

于 2009-10-29T15:12:20.737 回答
0

您可以从后台线程运行该代码。您可以查看BackgroundWorker对象。

于 2009-10-29T15:11:46.047 回答