Я буду расширять свой комментарий. В общем, я думаю, что вы должны пересмотреть свой подход. Весь код доступа к базе данных должен открывать соединение, выполнять запрос, а затем закрывать соединение, где вы полагаетесь на пул соединений, чтобы уменьшить затраты на открытие большого количества соединений с базой данных.
Если речь идет об одной команде SQL, строки которой для нее не должны изменяться, это проблема, которая должна решаться уровнем изоляции транзакции. Для этого вы можете исследовать уровень изоляции моментальных снимков в SQL Server 2005 +.
Если мы говорим о серии запросов, которые являются частью длительной транзакции, это более сложно и может быть обработано через хранение состояния транзакции, которое другие соединения читают, чтобы определить, могут ли они продолжаться. Идя по этому пути, вы должны предоставить пользователям инструменты, с помощью которых они могут отменить долгосрочную транзакцию, которая может больше не применяться.