中断执行存储过程

我正在从一个SQL服务器调用存储过程的C#应用​​程序。 根据用户输入的搜索参数,存储过程可能需要一段时间并返回许多记录。

我想要实现一个取消按钮,这样用户可以在需要很长时间的时候取消存储过程的执行。 我在新线程中运行对存储过程的调用,以便在存储过程需要一段时间时GUI不会受到影响。 我读了关于中止一个线程,但发现许多拒绝有关使用中止的意见。

我想到的可能解决方案:

  • 有没有一种常见的方式来停止执行存储过程(这是在C#代码中的方法)
  • 有没有更好的方法来停止线程? (我也发现Thread.Interrupt()但这只适用于封锁线程,而不是在运行代码)
  • 我可以放弃这个线程并开始一个新线程,但是之后会使用不必要的数据库和网络资源
  • 有没有办法从服务器端停止存储过程?

  • 你可能不想在这里使用Linq。 尝试这个:

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

    基本上使用SqlCommand.Cancel()

    http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.cancel.aspx


    你可以尝试放弃进程服务器端,但它需要高级privilesdge(服务器管理员),所以在大多数情况下它是不可行的。

    线程流产可以工作(不推荐),但我不确定数据库会停止处理。

    最后,我不确定有什么办法可以有效地做到这一点。


    您可以中止该线程,但该查询将仍然运行,因为这是由SQL服务器托管的。

    链接地址: http://www.djcxy.com/p/71581.html

    上一篇: interrupt execution of stored procedure

    下一篇: The "right" way to do stored procedure parameter validation