Sql server 捕获SQL Server中已取消的存储过程

Sql server 捕获SQL Server中已取消的存储过程,sql-server,stored-procedures,cancellation,Sql Server,Stored Procedures,Cancellation,我在SQL server中有一个类似以下内容的存储过程: insert into Record(StartTimestamp) values (GETDATE()) SET @MyID = SCOPE_IDENTITY() begin try -- do something UPDATE Record SET EndTimestamp = GETDATE() WHERE ID = @MyID end try begin catch UPDATE Record SET EndTimes

我在SQL server中有一个类似以下内容的存储过程:

insert into Record(StartTimestamp) values (GETDATE())
SET @MyID = SCOPE_IDENTITY()
begin try
  -- do something
  UPDATE Record SET EndTimestamp = GETDATE() WHERE ID = @MyID
end try
begin catch
  UPDATE Record SET EndTimestamp = GETDATE(), Error = ERROR_MESSAGE() WHERE ID = @MyID
end catch
它从应用程序调用,运行需要几秒钟。如果用户在运行时取消它,则记录表中会出现StartTimestamp,但没有错误,也没有EndTimestamp。我总是想知道用户启动了这个存储过程,但我也希望总是记录它完成的时间,无论是成功、错误还是被取消

在SQL Server中是否有任何方法可以做到这一点


谢谢

也许你可以修改取消逻辑?因此,不要从业务层调用SqlCommand.Cancel,而是执行第二个在某处设置标志的过程,然后在第一个过程运行时检查该标志

SqlCommand.Cancel的要点在于它确实停止了执行,停止了SP的运行并进行了回滚。我认为您必须从业务层着手


GJ

我想你可能是对的,但我没有自己的业务层,所以我希望能够从我这边做到这一点。