Если подсказка запроса "WITH NOLOCK" используется в представлении в SQL Server, распространяет ли этот намек на само определение представления, даже если NOLOCK НЕ используется для необработанных таблиц в определении представления? Причина в том, что иногда сотрудники службы поддержки хотят делать огромные трудоемкие запросы, но скорее не будут вынуждать эту блокировку по всем запросам, используя представление внутри самого приложения.
Использование С помощью таблицы NOLOCK Подсказка в запросе с использованием представления - распространяется ли оно внутри представления?
Ответ 1
Да, NOLOCK будет распространяться на таблицы, используемые определением вида (по крайней мере, в SQL Server 2005).
Смотрите Табличные подсказки в MSDN:
В SQL Server 2005 все подсказки блокировки распространяются на все таблицы и представления, на которые ссылаются в представлении. Кроме того, SQL Server выполняет соответствующие проверки согласованности блокировок.
Однако
Если таблица содержит вычисленные столбцы, а вычисляемые столбцы вычисляются выражениями или функциями, обращающимися к столбцам в других таблицах, подсказки таблицы не используются в этих таблицах. Это означает, что подсказки таблицы не распространяются. Например, подсказка таблицы NOLOCK указана в таблице в запросе. В этой таблице вычисляются столбцы, которые вычисляются комбинацией выражений и функций, которые обращаются к столбцам в другой таблице. Таблицы, на которые ссылаются выражения и функции, не используют подсказку таблицы NOLOCK при доступе.
Если вы используете индексированные представления, вы можете прочитать немного больше, так как есть и некоторые специальные случаи.
Также см. Просмотр разрешения для получения дополнительной информации.
Ответ 2
Просто чтобы дополнить Рори отличным ответом.
Он пишет: "Да, NOLOCK будет распространяться на таблицы, используемые определением вида (по крайней мере, в SQL Server 2005).
Фактически это будет работать и в SQL 2000. От BOL:
Поскольку select_statement использует оператор SELECT, он действителен для использования и подсказок, как указано в предложении FROM. Для получения дополнительной информации см. FROM и SELECT.