Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何终止或回滚活动事务?_Sql_Sql Server_Tsql - Fatal编程技术网

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 -----------------------------------------

如何终止或回滚未提交的事务

我正在使用以下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
----------------------------------------------------------------------------------------------------------------------
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因为回滚已提交的事务(如您所述),可用性仅限于一些非常特殊的场景。