2016-06-13 3 views
-1

Я ищу сценарий, который я могу запустить на своем сервере для создания представлений без блокировки для всех моих таблиц в моей базе данных. Благодаря!T-SQL Создайте представление без блокировки для всех таблиц в базе данных

+1

Можете ли вы объяснить, почему? – Mike

+3

Установить [Плохие привычки пинать NOLOCK повсюду] (http://blogs.sqlsentry.com/aaronbertrand/bad-habits-nolock-everywhere/) - это НЕ РЕКОМЕНДУЕТСЯ *** использовать это везде - наоборот! –

ответ

0

Хотя я согласен с тем, что это плохая идея, все еще может быть что-то, что можно получить/узнать, показывая несколько примеров. Но - да - это потенциально очень плохая идея, но в некоторых странах это может иметь смысл.

Если это одноразовая вещь, вы можете сделать что-то подобное, что просто создаст DDL для просмотров с помощью (nolock). Вам просто нужно скопировать-вставить и выполнить. Если это нужно динамически генерировать, необходимо немного больше использовать.

Еще одно предостережение о нижеследующем - оно использует select * в виде без привязки схемы. Будьте особенно осторожны с этими типами представлений, поскольку они не обновляются автоматически, если меняется структура базовой таблицы. Целесообразно и хорошая практика полностью квалифицировать столбцы в представлениях, если у вас нет других гарантий.

select ' 
    create view ' + name + 'MayBeABadIdea as select * from ' + name + ' (nolock); 
    go' 
from sys.objects 
where type = 'U' 
order by name; 
+0

Спасибо. Я полностью согласен с тем, что это не лучшая идея; Мне нужно иметь возможность запрашивать мою базу данных CTI в режиме реального времени без блокировки таблиц. К сожалению, для здравоохранения требуется некоторый живой поиск данных, но я не хочу препятствовать моей маршрутизации и доставке вызовов. –