Мне интересно, как дорогостоящий ресурс должен выполнить транзакцию начала соединения и imediatelly обновить/вставить строку в базу данных и позволить этой транзакции висит в течение нескольких часов. В основном я просто хочу выполнить резервирование номера серии для моей системы управления документами. Моя серия - это нечто очень обычное, и я хочу, чтобы всякий раз, когда пользователь нажимает кнопку «Добавить новый документ», следующее значение будет выделено в мою таблицу распределения строк. Чтобы выделить его, я бы ввел строку в таблицу распределения. В следующий раз, когда новый пользователь запросит следующее значение, он будет читать с использованием подсказки NOLOCK, чтобы он увидел мое ожидающее вставленное значение, чтобы он знал и следующее значение. Если пользователь отменяет форму, которая добавляет новый документ, я бы просто выполнил откат по моему открытому соединению. Если соединение потеряно и я вхожу в режим «добавить», тогда я бы проверил, соответствует ли текущий идентификатор транзакции, по которому я выделил свою серию, совпадающую с текущей. Если нет, то я бы выделил еще один. Нет проблем, что пользователь потеряет серию из-за потери соединения. Как вы думаете? Я чувствую, что это очень плохая практика, потому что это противоречит идее, которую я узнал за несколько лет разработки программного обеспечения: откройте соединение как можно позже и закройте его как можно скорее.Долгосрочная транзакция SQL Server
Спасибо заранее!