Если установлено много блокировок с одной и той же гранулярностью в процессе выполнения транзакции, Database Engine автоматически преобразует эти блокировки в блокировку таблицы. Этот процесс конвертирования множества блокировок уровней страницы, строки или индекса в блокировку уровня таблицы называется укрупнением блокировки. Начало укрупнения определяется системой динамически и не требует конфигурирования. (В настоящий момент значением границы укрупнения является 5000 блокировок.)
Основной проблемой, связанной с укрупнением блокировки, является то, что сервер базы данных принимает решение, когда следует укрупнять конкретную блокировку, а это решение может не быть оптимальным для приложений с различными потребностями. По этой причине SQL Server 2008 расширяет синтаксис оператора alter table, предоставляя вам возможность изменять механизм укрупнения блокировок. Этот оператор теперь поддерживает опцию table со следующим синтаксисом:
set (lock_escalation = {table | auto | disable})
Опция table является значением по умолчанию; она задает, что укрупнение блокировки будет устанавливаться на уровне грануляции таблицы. (Это поведение точно такое же, как и в SQL Server 2005.) Опция auto позволяет Database Engine выбрать гранулярность укрупнения блокировки, которая будет лучше подходить для таблицы схемы. Наконец, опция disable позволяет вам отменить в большинстве случаев укрупнение блокировки. (Это тот же самый случай, когда Database Engine должен выбрать блокировку таблицы для защиты целостности данных.)
В примере 13.3 запрещается укрупнение блокировки для таблицы employee.