Как может быть соединение SQL, которое спит ожидающая транзакция? - PullRequest
1 голос
/ 01 декабря 2010

Я столкнулся с некоторыми блокировками на нашем сервере БД, созданном нашим приложением.Что я не понимаю, так это то, как процесс, который спит, имеет открытую транзакцию (этот процесс 71 - тот, который создает блокировку).

Насколько я знаю, когда процесс завершается, он закрывает все открытыесделки.Это верно?

Спасибо заранее, товарищи.

alt text

Ответы [ 2 ]

2 голосов
/ 01 декабря 2010

Насколько я знаю, когда процесс завершается, он закрывает все открытые транзакции.Это верно?

Нет.Если вы явно открываете транзакцию, вы должны явно commit или rollback.До этого времени транзакция остается открытой, поэтому соединение может быть бездействующим (в настоящее время не выполняет ни одной задачи), но все еще имеет незафиксированную транзакцию.

Многие ожидают, что ошибка автоматически откатит транзакциюно это не тот случай, если у вас нет

set xact_abort on
0 голосов
/ 01 декабря 2010

Насколько я знаю, когда процесс завершается, он закрывает все открытые транзакции.Это верно?

Да.Но это не гарантировано, и вы не должны на это полагаться.Вы должны явно закрыть соединение.

...