Как убить или отменить активную транзакцию?
Как я могу убить или отменить транзакцию без транзакции?
Я перечисляю свои активные транзакции со следующим 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)...
Спасибо всем
Ответы
Ответ 1
Вы не можете убить/отменить транзакцию с другого сеанса, не убив сеанс владельца.
Я думаю, что, позволяя убивать/откатывать транзакцию из другого сеанса пользователя, означает много нарушений правил проектирования и безопасности, поскольку для этого требуется ввести другой сеанс пользователя (в контексте текущего дизайна сервера SQL Server). Вероятно, поэтому он не реализован.
Ответ 2
Чтобы очистить все транзакции, используйте это только как временное решение
ALTER DATABASE DatabaseName
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
ALTER DATABASE DatabaseName
SET MULTI_USER;
см. этот сайт для получения дополнительной информации
Очки для проверки - это также откат совершенных транзакций