Вопрос

Есть ли способ заблокировать строку в базе данных SQL 2005-2008 без запуска транзакции, чтобы другие процессы не могли обновить строку, пока она не будет разблокирована?

Это было полезно?

Решение

Вы можете использовать Уключина или другие подсказки но ты должен быть таким осторожно..

Подсказка о БЛОКИРОВКЕ проинструктирует SQL Server удерживать блокировку до тех пор, пока вы не зафиксируете транзакцию.Подсказка ROWLOCK заблокирует только эту запись и не вызовет блокировку страницы или таблицы.

Блокировка также будет снята, если вы закроете свое соединение или истечет время ожидания.Я был бы ОЧЕНЬ осторожен, делая это, так как это остановит любые операторы SELECT, которые попадают в эту строку намертво.SQL Server содержит множество подсказок по блокировке, которые вы можете использовать.Вы можете увидеть их в книгах онлайн, выполнив поиск либо по HOLDLOCK, либо по ROWLOCK.

Другие советы

Все, что вы выполняете на сервере, происходит в транзакции, как неявной, так и явной.

Вы не можете просто заблокировать строку без транзакции (сделать строку доступной только для чтения).Вы можете сделать базу данных доступной только для чтения, но не только для одной строки.

Объясните свою цель, и это может оказаться лучшим решением.Уровни изоляции и подсказки по блокировке, а также управление версиями строк.

Вам нужно заблокировать ряд, или должен Блокировки приложений Sql Server делай то, что тебе нужно?

Блокировка приложения - это просто блокировка с именем, которую вы можете "заблокировать", "разблокировать" и проверить, заблокировано ли она.смотрите ссылку выше для получения подробной информации.(Они разблокируются, если ваше соединение закрывается и т.д., поэтому постарайтесь привести себя в порядок)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top