从 .net 代码停止 SQL 查询执行

Posted

技术标签:

【中文标题】从 .net 代码停止 SQL 查询执行【英文标题】:Stop SQL query execution from .net Code 【发布时间】:2011-06-14 08:39:31 【问题描述】:

我正在从“.net”代码执行一个存储过程。由于数据量很大,所以执行起来花费了太多时间。有什么办法可以从 c# 代码中阻止这种执行?

换句话说,如果我们从数据库本身执行查询,可以选择停止执行,但在代码中是否可以?

【问题讨论】:

您可以在存储过程中添加过滤器吗?尝试阅读有关 sql 最佳实践的更多信息.. 【参考方案1】:

是的 sqlcommand.cancel 是你的朋友http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.cancel.aspx

【讨论】:

显然关闭命令更有可能 100% 工作:***.com/questions/889102/…【参考方案2】:

是的,您可以使用SqlCommand.Cancel 取消查询。但是,该命令必须在另一个线程中运行(否则只有在命令完成后才会调用 Cancel)。

如果您想在查询超过指定时间限制时取消此查询,您也可以指定CommandTimeout

【讨论】:

命令必须在另一个线程中运行?真实世界的样本? FWIW,设置 CommandTimeout 不会取消 mysql 数据库服务器上的查询。它只是结束了客户端的等待。这需要显式调用@MySql Connector/Connection.cs。【参考方案3】:

你可以做myCommand.Cancel(),这将是最好的,因为即使我过去也遇到过类似的问题,并且使用myCommand.Cancel() 我已经解决了我的问题。 :) :)

【讨论】:

以上是关于从 .net 代码停止 SQL 查询执行的主要内容,如果未能解决你的问题,请参考以下文章

无法停止 SQL 注入错误

pl/sql连接Oracle不管执行啥语句都会重复执行这条语句,永不停止,怎么办呀

vb.Net & Access 是/否 sql 执行错误

oracle如何查询和停止正在运行的job?

MySql 查询数据时间过长,导致程序报错 怎么解决

停止 .NET 应用程序的 SQL Server DB 可以通过使用 ODBC 的 Access 进行修改?