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))
I'm using SqlClient.SqlCommand object to run a few stored procs on my db. Normally when I run these manually via Query Analyzer they take up to 15 minutes to complete.
So obviously when I run them using the SqlCommand object I get a SqlCommand timeout.
I know I could set the timeout property to a very high number, but I'm wondering if alternatively there's a way to just kickoff the procs and disconnect. I don't need a return value.
Any suggestions? I'm not interested in optimizing the processing time of each sp here, just trying to determine if there's a 'set it and forget it' option.
Here's the content of the SqlCommand object:
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))
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以使用异步方法,例如 BeginExecuteNonQuery。为此,超时被忽略。
You can use an async method, like BeginExecuteNonQuery. The timeout is ignored for that.
使用异步方法调用BeginExecuteNonQuery。来自MSDN 页面
Use the asynchronous method call BeginExecuteNonQuery. From the MSDN page
您可以从后台线程运行该代码。您可以查看 BackgroundWorker 对象。
You could run that code from a background thread. You could look into the BackgroundWorker object.