NOLOCK на стороне сервера в SQL Server
Я знаю, что в БД Oracle я могу настроить флаг, чтобы все запросы на выборку, выполняемые на конкретной БД, могли выполняться так, как если бы NOLOCK
подсказка была добавлена. Есть ли что-то подобное в SQL Server?
3 ответа
Вы можете установить базу данных в режим READ_ONLY, который, безусловно, меняет некоторые правила транзакций, но я не думаю, что есть что-то ближе к глобальному NOLOCK.
редактировать
Если вы хотите иметь возможность выполнять УДАЛЕНИЯ, ВСТАВКИ и ОБНОВЛЕНИЯ, но не хотите, чтобы читатели блокировали или указывали подсказки или уровни изоляции, вы также можете рассмотреть возможность включения READ_COMMITTED_SNAPSHOT, но семантика там опять-таки не совсем та же. как намек NOLOCK.
Не на уровне базы данных. Вы можете сделать это только с подсказками или 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
так далее