fku*_*cuk 6 sql transactions sql-server-2008
在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上的"取消执行查询"按钮时,它取消查询并使事务保持打开状态.
这是预期的行为吗?或者我的模式中有错误.它不应该回滚交易吗?
恕我直言,这是一个预期的行为.当您在打开事务时取消查询运行时 - 它将保持打开状态,直到您显式提交或回滚它或直到连接未关闭为止
你的模式中没有任何有价值的错误.如果您手动控制执行流程(取消执行查询),那么您应该以相同的方式处理打开的事务 - 手动.
更新:
查询执行后,行为由SSMS选项Disconnect控制- 这意味着查询在执行或取消后断开连接并回滚打开的事务:

| 归档时间: |
|
| 查看次数: |
5290 次 |
| 最近记录: |