Что происходит с транзакцией в этом SQL, если она не зафиксирована? - PullRequest
2 голосов
/ 17 сентября 2009

Если у меня есть следующий SQL:

BEGIN TRANSACTION
SELECT val
FROM myTable

и не выполняйте коммит, что происходит с СДЕЛКОЙ? Зависит ли это от контекста / объема, в котором он был выполнен (например, в процедуре, в MGT Studio)?

Есть ли место, где можно посмотреть, есть ли открытые транзакции, которые не были зафиксированы / откатаны в базе данных?

Спасибо

Chris

Ответы [ 3 ]

7 голосов
/ 17 сентября 2009

Он остается открытым, пока не закроется соединение. Когда соединение закрыто, транзакция откатывается.

Текущие транзакции можно увидеть в sys.dm_tran_active_transactions и sys.dm_tran_database_transactions .

1 голос
/ 09 сентября 2012

Используйте следующую команду для проверки всех открытых транзакций в базе данных:

DBCC CHECKTRAN
1 голос
/ 17 сентября 2009

Блокировки не снимаются для объектов, используемых в транзакции, и изменения видны только для этого соединения.

...