gpt4 book ai didi

sql - 取消查询后交易仍处于打开状态

转载 作者:行者123 更新时间:2023-12-04 14:17:36 26 4
gpt4 key购买 nike

在 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

当我点击 Sql Server Management Studio 上的“取消执行查询”按钮时,它会取消查询并使事务保持打开状态。

这是预期的行为吗?还是我的模式有错误。它不应该回滚事务吗?

最佳答案

恕我直言,这是一种预期的行为。当您取消查询运行时,如果有打开的事务 - 它保持打开状态,直到您明确提交或回滚它 直到连接没有关闭

您的模式中没有任何有值(value)的错误。如果您手动控制执行流程(取消执行查询),那么您应该以相同的方式处理打开的事务 - 手动。

更新:

该行为由 SSMS 选项 Disconnect 在查询执行后控制 - 这意味着查询在执行或取消后断开连接并回滚打开的事务:
enter image description here

关于sql - 取消查询后交易仍处于打开状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8709058/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com