我在这里看到一个关于这个的问题。但是,在我的情况下,它是在表上运行长时间运行的插入/更新的 Windows 服务,我需要从我的 ASP.NET 应用程序中取消该操作。在上面的链接中,Burnsys 建议应该终止 Sql 服务器会话。这真的是唯一的方法和好的做法吗?
此外,在同一个建议中,有人建议可以使用 SqlCommand.Cancel 取消。但是,我不确定如何从 ASP.NET 应用程序的 Windows 服务中取消命令。
请指教。
提前感谢您的所有宝贵意见,Ashish
我在这里看到一个关于这个的问题。但是,在我的情况下,它是在表上运行长时间运行的插入/更新的 Windows 服务,我需要从我的 ASP.NET 应用程序中取消该操作。在上面的链接中,Burnsys 建议应该终止 Sql 服务器会话。这真的是唯一的方法和好的做法吗?
此外,在同一个建议中,有人建议可以使用 SqlCommand.Cancel 取消。但是,我不确定如何从 ASP.NET 应用程序的 Windows 服务中取消命令。
请指教。
提前感谢您的所有宝贵意见,Ashish
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();