SqlCommand 对象 - 设置它然后忘记它?

发布于 2024-08-09 12:34:48 字数 921 浏览 3 评论 0原文

我正在使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

荒芜了季节 2024-08-16 12:34:48

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

You can use an async method, like BeginExecuteNonQuery. The timeout is ignored for that.

゛清羽墨安 2024-08-16 12:34:48

使用异步方法调用BeginExecuteNonQuery。来自MSDN 页面

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

Use the asynchronous method call BeginExecuteNonQuery. From the MSDN page

The CommandTimeout property will be ignored during asynchronous method calls such as BeginExecuteReader.

与君绝 2024-08-16 12:34:48

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

You could run that code from a background thread. You could look into the BackgroundWorker object.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文