SqlCommand对象 - 设置它并忘记它?

时间:2009-10-29 15:04:00

标签: c# sqlcommand

我正在使用SqlClient.SqlCommand对象在我的数据库上运行一些存储过程。通常,当我通过查询分析器手动运行它们时,最多需要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))

3 个答案:

答案 0 :(得分:5)

您可以使用async方法,例如BeginExecuteNonQuery。暂停超时。

答案 1 :(得分:4)

使用异步方法调用BeginExecuteNonQuery。来自the MSDN page

  

在异步方法调用(如BeginExecuteReader。

)期间,将忽略CommandTimeout属性

答案 2 :(得分:0)

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