Как применить блокировку на уровне таблицы в SQL-сервере
Я использую SQL Server 2008 R2 Edition и хочу применить блокировку на уровне таблицы при выборе данных из таблицы.
Поскольку применение NO_LOCK может привести к проблеме DIRTY READ, так что вы хотите применить NO_LOCK к таблицам, которые содержат только данные домена, а не данные транзакции. т.е. данные, которые реже меняются.
Пожалуйста, предложите любой способ применить LOCK к таблицам доменов.
1 ответ
Вам не нужно блокировать таблицу во время чтения (SELECT), так как чтение всегда получает общую блокировку таблицы или строки. WITH(NOLOCK)
табличная подсказка также позволяет читать незафиксированные данные; это строки, которые еще не вставлены и переданы другим сеансом. Вы можете рассмотреть, настройка TRANSACTION ISOLATION LEVEL
в READ COMMITED
чтобы убедиться, что незафиксированные данные никогда не будут красными.