Блокировка диапазона SQL Server не снята
У меня следующая ситуация:
Таблица A содержит некоторую информацию, таблица B содержит ее детали. B имеет внешний ключ для A и настроен на каскад.
Теперь я делаю вставку в A с "data1" и двумя строками для деталей.
Затем я удаляю data1 из A и отслеживаю события Lock.Acquired и Lock:Released в профилировщике. Я делаю это с помощью "READ COMMITTED SNAPSHOT". После удаления я делаю откат.
Что теперь происходит: я получаю кучу замков, и все кажется нормальным, но одна вещь странная. Как вы можете видеть на рисунке, есть блокировка RangeS-U, которая никогда не снимается. Блокировка выполняется для некластеризованного индекса таблицы сведений.
Как может случиться, что блокировка никогда не снимается?