Поймать отмененную хранимую процедуру в SQL Server - PullRequest
0 голосов
/ 16 февраля 2011

У меня есть хранимая процедура на сервере SQL, которая выглядит примерно так:

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 в таблице Record, но без ошибок и EndTimestamp.Я всегда хочу знать, что пользователь инициировал этот сохраненный процесс, но я также хочу всегда записывать, когда он завершится, либо по успешному завершению, либо по ошибке, либо при отмене.

Есть ли способ сделать это в SQL Server?

Спасибо

1 Ответ

1 голос
/ 16 февраля 2011

Может быть, вы могли бы переработать логику отмены?Поэтому вместо вызова SqlCommand.Cancel из бизнес-уровня выполните второй процесс, который где-то устанавливает флаг, а затем выполните первую проверку процесса для этого флага во время его работы ...

Весь смысл SqlCommand.Cancelчто он действительно останавливает выполнение, останавливая запуск SP и откат.Я думаю, что вам придется подходить к этому с бизнес-уровня.

ГДж

...