2009-10-29 14 views
2

我正在使用SqlClient.SqlCommand对象来运行我的数据库上的一些存储过程。通常,当我通过查询分析器手动执行这些操作时,最多需要15分钟才能完成。SqlCommand对象 - 设置它,并忘记它?

很显然,当我使用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)) 

回答

5

您可以使用异步方法,如BeginExecuteNonQuery。超时被忽略。

+0

+1 - 打我22秒(但没有链接,所以谁真的赢了?:-)) – 2009-10-29 15:13:13

+0

好,为了公平起见,我确实阅读了该页来检查我的答案。 :) – Jason 2009-10-29 15:13:57

+0

如果使用此方法,请确保不要将SqlConnection置于using子句中,否则将在命令执行完成之前处理连接。 – Aheho 2014-05-12 18:42:21

0

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

4

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

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

相关问题