Сервер NoLock в SQL Server
-
29-09-2019 - |
Вопрос
Я знаю, что в Oracle DB я могу настроить флаг, чтобы все запросы выбора, работающие на определенной БД, как если бы NOLOCK
Подсказка была добавлена. Есть что-то похожее на SQL Server?
Решение
Вы можете установить базу данных в Read_only. Режим, который, безусловно, меняет некоторые правила транзакции, но я не думаю, что есть что -то ближе к глобальному нолоку.
Редактировать
Если вы хотите иметь возможность выполнять удаления, вставления и обновления, но вы не хотите, чтобы читатели блокировали или должны были указать подсказки или уровни изоляции, вы также можете рассмотреть возможность включения. Read_committed_snapshot, но семантика там снова не совсем так же, как нолоцкий подсказка.
Другие советы
Не на уровне данных. Вы можете сделать это только с подсказками или set transaction isolation level
. Анкет Вы можете установить базу данных для режима только для чтения, что может иметь этот эффект по умолчанию, но который будет (как следует наименование), предотвращают запись в базу данных.
Это может быть полезно для базы данных, которая периодически обновляется. Вы устанавливаете базу данных только для чтения и устанавливаете ее на написание для обновлений, а затем обратно в чтение.
Не для всей базы данных, но для каждого запроса вы делаете:
SELECT a, b
FROM t1
WITH (NOLOCK)
WHERE t1.c = @value
или
SELECT a, b
JOIN t1
ON t1.id = t2.id
WITH (NOLOCK)
FROM t2
WHERE t2.c = @value
и т.д