0

我在这里看到一个关于这个的问题。但是,在我的情况下,它是在表上运行长时间运行的插入/更新的 Windows 服务,我需要从我的 ASP.NET 应用程序中取消该操作。在上面的链接中,Burnsys 建议应该终止 Sql 服务器会话。这真的是唯一的方法和好的做法吗?

此外,在同一个建议中,有人建议可以使用 SqlCommand.Cancel 取消。但是,我不确定如何从 ASP.NET 应用程序的 Windows 服务中取消命令。

请指教。

提前感谢您的所有宝贵意见,Ashish

4

1 回答 1

0

1)如果您可以更改windows服务或存储过程的代码,我建议在sql server上创建一些表来存储长时间运行的任务的状态。Windows 服务(可以由服务执行)会将记录添加到该表中。ASP.NET 应用程序将监视此表(手动)以停止任何正在运行的进程。

如果你还在使用 sql server 2005,你仍然可以使用 KillProcess(ProcessId)。因此将 processId 存储到此表中,asp.net 应用程序可以向 sql server 发送终止进程命令(如果您有权限)。

2)如果您有任何托管在windows服务中的服务的编程(例如wcf)接口,所以我建议异步执行LR任务并添加方法来取消该任务。ASP.NET 应用程序可以调用此取消方法。

SqlCommand command = new SqlCommand();
            command.BeginExecuteNonQuery();

...
            command.Cancel();
于 2010-03-07T09:31:16.307 回答