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

так далее

Другие вопросы по тегам