Я использую удаленные соединения для соединения клиента и сервера, после 6 месяцев бесперебойной работы транзакция зависла, возможно, из-за обрыва соединения во время выполнения транзакции.
Как можно предотвратить зависание транзакции в случае потери соединения?
Разве SQL не должен отменять транзакцию, если через некоторое время не завершится?
UPDATE:
Я использую изоляцию SQL Server по умолчанию (чтение передано), и это способ ее репликации:
Я попытался установить SET XACT_ABORT, как было предложено, но не повезло, проблема остается, это последовательность событий, чтобы повторить эту проблему:
Установите точку останова в середине транзакции и начните
отладки
Как только транзакция достигла точки останова, отключите
компьютер из сети (симуляция произошла ненормально
разъединение)
Продолжите отладку процесса и подождите, пока .NET SqlClient
киньте ошибку (нет сети)
Подключите ПК к сети (имитация подключения к интернету
возвращается)
SQL Server не завершает или не выполняет откат транзакции, поэтому
таблицы, используемые в первой середине транзакции, заблокированы