2009-06-23 2 views
10

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

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

+2

Вы хотите быть осторожными делать это, особенно в операционных средах большого объема из-за грязное чтение. –

+2

Прежде чем это сделать - убедитесь, что вы понимаете полные последствия грязных чтений. В запросах могут отсутствовать записи или записи с двойным чтением, что во многих случаях не очень хорошо для вашего приложения. –

ответ

6

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

SET TRANSACTION ИЗОЛЯЦИЯ LEVEL READ UNCOMMITTED

5

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

SET TRANSACTION ИЗОЛЯЦИЯ LEVEL READ UNCOMMITTED

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

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

14

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

Однако, прежде чем спуститься по этому маршруту, сначала попробуйте выполнить ЗАЧИТЫВАТЬ СЧЕТЧИК. Это означает, что ваши чтения не будут заблокированы в процессе внедрения вставок/обновлений и означают, что данные не являются грязными, просто устаревшими.

0

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

Смежные вопросы