Sql 如何终止或回滚活动事务?
如何终止或回滚未提交的事务 我正在使用以下sql列出我的活动事务:Sql 如何终止或回滚活动事务?,sql,sql-server,tsql,Sql,Sql Server,Tsql,如何终止或回滚未提交的事务 我正在使用以下sql列出我的活动事务: SELECT * FROM sys.dm_tran_session_transactions 我的结果是: session_id transaction_id transaction_descriptor enlist_count is_user_transaction is_local is_enlisted is_bound -----------------------------------------
SELECT * FROM sys.dm_tran_session_transactions
我的结果是:
session_id transaction_id transaction_descriptor enlist_count is_user_transaction is_local is_enlisted is_bound
----------------------------------------------------------------------------------------------------------------------
54 117260 0x0100000036000000 0 1 1 0 0
我不想终止会话(54)
谢谢大家如果不终止所有者会话,就无法终止/回滚另一个会话中的事务
我认为,允许从另一个用户的会话中终止/回滚事务意味着许多设计和安全规则违反,因为它需要进入另一个用户会话(在当前sql server引擎设计的上下文中)。这可能就是它未实现的原因。要清除所有事务,请仅将其用作临时解决方案
ALTER DATABASE DatabaseName
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
ALTER DATABASE DatabaseName
SET MULTI_USER;
有关更多信息,请参阅
需要检查的要点-它还可以回滚已提交的事务我认为您不能。我想您可以尝试并设计一个错误来停止事务,如果启用了
XACT\u ABORT
,它将自动回滚,但有什么意义呢?为什么不杀死spid?我不想杀死spid,因为我不想杀死用户的会话,但我想我必须这么做。。。我没有任何意见。他可能不希望通过终止会话来中断用户的连接。仅将此作为临时解决方案使用,因为这将取消所有TransactionSQL Server 12.0--“多语句事务中不允许使用ALTER DATABASE语句。”我在(sql authority.com)上找到了此选项请参考该站点了解更多详细信息……我尝试了这段代码,并意识到它还回滚提交的事务。我不知道它是否为当前会话回滚。这是一个很好的临时解决方案,它让我大开眼界。@AlicanUzun因为回滚已提交的事务(如您所述),可用性仅限于一些非常特殊的场景。