c# - 终止长时间运行的 SQL 命令

标签 c# sql sql-server

假设我们的前端应用程序 (C#) 与 SQL Server 建立一系列连接并执行一系列可能需要几个小时才能完成的存储过程。我需要有一个工具来“取消”正在运行的存储过程。我知道这可以通过Sqlcommand.Cancel()来实现,但这似乎并不是一直有效。有没有更好的方法来实现这一点?

最佳答案

如果取消不起作用,杀戮可能也不起作用。他们必须使用相同的机制。在内部为它们设置不同的机制毫无意义。

I need this to be done from the front end, Ideally users will cancel their own long running SQL command

尽管操作仍在后台完成,但向用户模拟操作已取消是一种常用技术。在 .NET 中有多种操作不能立即取消。在这种情况下,最好的选择是隔离该操作并让它在后台完成。

TPL 使这变得相当容易。您可以搜索“.net cancel task”或“.net cancel uncancellable task”以获得一些指示。同样,我们的想法是继续执行并且只请求取消,而不是等待它。

您不需要使用 async/await 或异步 SqlCommand 方法来完成这项工作,但您可以。之所以提及这一点,是因为这是一种常见的误解。

关于c# - 终止长时间运行的 SQL 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35709969/

相关文章:

c# - 是否可以一起使用 DDD 和 BDD?

sql - 无法更新指示数据库 X 已启用更改数据捕获的元数据。返回的错误是15517

c# - Visual Studio 在我的 web.configs 中看到错误

c# - CommandEventArgs 和事件问题

mysql - 哪个是更快的 View 或子查询?

SQL:如何获得足够的事件天数,以便我至少有 50 个事件

php - 如何防止二阶 SQL 攻击?

sql-server - 具有单个值的大表的 UPDATE 列

sql-server - 无法将 tsql 连接到 SQL Server

c# - 如何在 YouTube 用户上传视频时调用函数?