Добавление (Nolock) «После всех» Выберите операторы во всех хранимых процедурах, написав скрипт на T-SQL - PullRequest
1 голос
/ 08 июня 2011

У меня есть много хранимых процедур в базе данных, и если в хранимых процедурах есть операторы select, я хочу добавить (Nolock) после всех этих операторов select, написав скрипт.

Я могу получить все сохраненныепроцедуры с использованием таблиц курсора и sys, но я не выяснил, как найти точно выбранные утверждения и добавив после них nolock.

Мне нужны ваши хорошие идеи.

Заранее спасибо,

1 Ответ

1 голос
/ 08 июня 2011

Хммм ... я бы этого не делал; добавление NOLOCK везде - это SQL-шаблон.

Есть и другие способы достижения того же эффекта:

  1. Настройте уровень изоляции транзакции для ваших приложений, которые вызывают вашу базу данных, и установите для них значение READ UNCOMMITTED, что будет иметь тот же эффект, что и добавление NOLOCK ко всем вашим операторам SELECT ... См .: http://msdn.microsoft.com/en-us/library/ms189542.aspx

  2. Или внедрить режим READ COMMITTED SNAPSHOT для всей базы данных: http://msdn.microsoft.com/en-us/library/ms345124%28v=sql.90%29.aspx

На самом деле наш собственный Джефф Этвуд писал о той же проблеме, которую вы, вероятно, пытаетесь решить здесь: http://www.codinghorror.com/blog/2008/08/deadlocked.html

Если возможно, я бы выбрал вариант № 2, но любой из этих вариантов, вероятно, будет менее трудоемким, чем в будущем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...