如何杀死或回滚活动事务?

ogu*_*gun 15 sql t-sql sql-server

我如何杀死或回滚,未提交的交易?

我用以下sql列出我的活动事务:

SELECT * FROM sys.dm_tran_session_transactions 
Run Code Online (Sandbox Code Playgroud)

我的结果是:

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
Run Code Online (Sandbox Code Playgroud)

我不想杀死会议(54)......

谢谢大家

Aru*_*E S 22

要清除所有事务,请仅将其用作临时解决方案

ALTER DATABASE DatabaseName

SET SINGLE_USER

WITH ROLLBACK IMMEDIATE;

ALTER DATABASE DatabaseName

SET MULTI_USER;
Run Code Online (Sandbox Code Playgroud)

请参阅此网站了解更多信息


小智 7

在不终止所有者会话的情况下,您无法从另一个会话中终止/回滚事务.

我认为,允许从另一个用户的会话中杀死/回滚事务意味着许多设计和安全规则违规,因为它需要进入另一个用户会话(在当前sql server引擎设计的上下文中).这可能就是它未实施的原因.