„Заключване на ескалация " е начинът, по който SQL се справя със заключването за големи актуализации. Когато SQL ще промени много редове, за двигателя на базата данни е по-ефективно да предприеме по-малко, по-големи заключвания (напр. цяла таблица), вместо да заключва много по-малки неща (напр. заключвания на редове)
Но това може да бъде проблематично, когато имате огромна таблица, защото заключването на цялата таблица може да заключи други заявки за дълго време. Това е компромисът:много заключвания с малка детайлност са по-бавни от по-малкото (или едно) грубозърнести заключвания и наличието на множество заявки, заключващи различни части на таблица, създава възможност за блокиране, ако един процес чака друг.
Има опция на ниво таблица, LOCK_ESCALATION
, ново в SQL 2008, което позволява контрол на ескалацията на заключването. По подразбиране, "TABLE" позволява заключванията да ескалират до нивото на таблицата. DISABLE предотвратява ескалацията на заключването към цялата таблица в повечето случаи. AUTO позволява заключвания на таблици, освен ако таблицата е разделена, в който случай заключванията се правят само до нивото на дяла. Вижте тази публикация в блога за повече информация.
Подозирам, че IDE добавя тази настройка при повторно създаване на таблица, тъй като TABLE е по подразбиране в SQL 2008. Имайте предвид, че LOCK_ESCALATION не се поддържа в SQL 2005, така че ще трябва да го премахнете, ако се опитвате да стартирате скрипта на Пример от 2005 г. Освен това, тъй като TABLE е по подразбиране, можете безопасно да премахнете този ред, когато стартирате отново скрипта си.
Също така имайте предвид, че в SQL 2005 преди тази настройка да присъства, всички заключвания можеха да ескалират до ниво таблица-- с други думи, "TABLE" беше единствената настройка в SQL 2005.