SQL Server - как установить (nolock) подсказку по умолчанию? - PullRequest
13 голосов
/ 24 июня 2009

есть ли способ сообщить серверу sql использовать подсказку (nolock) или каждый выбор в хранимой процедуре?

довольно утомительно добавлять его к каждому выбору ....

Ответы [ 5 ]

14 голосов
/ 24 июня 2009

Как совершенно справедливо говорят другие, глобальный (nolock) выполняется с использованием READ UNCOMMITTED.

Однако, прежде чем идти по этому пути, стоит сначала попробовать ПРОЧИТАТЬ ЗАКЛЮЧЕННЫЙ SNAPSHOT. Это означает, что ваши чтения не будут заблокированы во время вставок / обновлений, а также означает, что данные не загрязнены, просто устарели.

6 голосов
/ 24 июня 2009

Я думаю, это то, что вы ищете ...

УСТАНОВИТЕ УРОВЕНЬ ИЗОЛЯЦИИ СДЕЛКИ СЧИТАЕТСЯ НЕОГРАНИЧЕННЫМ

5 голосов
/ 24 июня 2009

Вы хотите использовать следующий синтаксис :

УСТАНОВИТЕ УРОВЕНЬ ИЗОЛЯЦИИ СДЕЛКИ СЧИТАЕТСЯ НЕОГРАНИЧЕННЫМ

Я нашел это, посмотрев на табличную подсказку NOLOCK, расположенную здесь . Подсказка таблицы WITH (NOLOCK) эквивалентна установке уровня изоляции READ UNCOMMITTED. Вот фрагмент из MSDN :

NOLOCK Эквивалент READUNCOMMITTED. Для получения дополнительной информации см. READUNCOMMITTED далее в этом разделе.

2 голосов
/ 24 июня 2009

нашел это ....

Как заставить подсказку nolock для входа на сервер sql

кажется, что лучший способ достичь этого - выдать

УСТАНОВИТЕ УРОВЕНЬ ИЗОЛЯЦИИ СДЕЛКИ СЧИТАЕТСЯ НЕЗАКОННЫМ

любая другая идея ???

пс

еще один связанный вопрос ...

NOLOCK против уровня изоляции транзакции

0 голосов
/ 24 июня 2009

Однако вы можете получить неверные данные. В 2005 году предпочтительно использовать изоляцию моментальных снимков: «Когда изоляция снимка помогает, а когда болит» http://www.devx.com/dbzone/Article/32957

...