在sql server 2008中,我使用的是这样的模式:
begin transaction
begin try
/* do something */
end try
begin catch
if @@TRANCOUNT > 0
rollback
DECLARE @ErrMsg nvarchar(4000), @ErrSeverity int
SELECT @ErrMsg = ERROR_MESSAGE(),
@ErrSeverity = ERROR_SEVERITY()
RAISERROR(@ErrMsg, @ErrSeverity,1)
end catch
if @@TRANCOUNT > 0
commit transaction
Run Code Online (Sandbox Code Playgroud)
当我点击Sql Server Management Studio上的"取消执行查询"按钮时,它取消查询并使事务保持打开状态.
这是预期的行为吗?或者我的模式中有错误.它不应该回滚交易吗?