Подтвердить что ты не робот

Как убить или отменить активную транзакцию?

Как я могу убить или отменить транзакцию без транзакции?

Я перечисляю свои активные транзакции со следующим 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)...

Спасибо всем

4b9b3361

Ответ 1

Вы не можете убить/отменить транзакцию с другого сеанса, не убив сеанс владельца.

Я думаю, что, позволяя убивать/откатывать транзакцию из другого сеанса пользователя, означает много нарушений правил проектирования и безопасности, поскольку для этого требуется ввести другой сеанс пользователя (в контексте текущего дизайна сервера SQL Server). Вероятно, поэтому он не реализован.

Ответ 2

Чтобы очистить все транзакции, используйте это только как временное решение

ALTER DATABASE DatabaseName

SET SINGLE_USER

WITH ROLLBACK IMMEDIATE;

ALTER DATABASE DatabaseName

SET MULTI_USER;

см. этот сайт для получения дополнительной информации

Очки для проверки - это также откат совершенных транзакций