如何从网页 ASP.NET 取消 SQL Server 命令



我有一个标准的 ASP.NET 网页。它使用 Ajax 向 SQL Server 发出查询,并返回结果表。问题是,有时这个结果表非常大,查询时间太长。(我无法控制 SQL,这是通过存储过程发生的。

有没有办法在页面上有一个"取消请求"按钮,以便当用户单击该按钮时,SQL 服务器上的查询被杀死?如果是这样,我将如何做?(我是 ASP.NET/C# 的新手,但了解 Web 请求的体系结构。谢谢。

一种方法:

创建连接,并将其放在字典中,并使用 Guid.ToString() 作为键。运行查询并将密钥返回到网页,并将其保存在某个位置。

如果查询完成执行确定:

Find the connection, close it, and remove it from the dictionary.

如果用户单击"取消查询":

Send an ajax request to the web server with the key you saved.
Find the connection, close it, and remove it from the dictionary.

确保锁定字典。

确保捕获异常。

我认为这非常困难,因为您需要知道发出长时间运行的请求的确切请求的特定尖峰。 来自同一用户的内容将作为更多有效请求(如果您的网站像大多数网站一样设置)。

我正在做同样的事情,但我想对上述陈述进行一些更正。那个说找到SPID很困难的人是不正确的。我刚刚实现了一个系统,当某些长时间运行的存储过程运行时,它们将记录放入(或更新)我存储的表中,其中包含 SPID、运行报告的用户、一些报告信息和开始日期。在存储过程中使用 @@SPID 可以获得存储在表中的 SPID。此外,连接关闭而不结束查询是正确的,您需要一个 KILL 语句。

最新更新