sp_lock IX Mode - поясните плз.

waszkiewicz
Дата: 07.02.2013 09:56:49
В BOL написано про намерения наложить X блокировку на подчиненные ресурсы.
Вопрос - что за они?
Вот кусок из sp_lock для этой таблицы
111 7 2133582639 0 TAB IS GRANT
111 7 1714105147 1 KEY (ffffffffffff) RangeIn- WAIT
111 7 1714105147 1 PAG 1:4545709 IX GRANT
111 7 1714105147 0 TAB IX GRANT
Glory
Дата: 07.02.2013 10:18:55
Подчиненные ресурсы для таблицы это ее страницы данных и ключи индекса
waszkiewicz
Дата: 07.02.2013 10:41:51
Еще вопросик - почему намерения таки блокируют?
Или пропустил что-то?
Гость333
Дата: 07.02.2013 11:00:28
waszkiewicz
Еще вопросик - почему намерения таки блокируют?
Или пропустил что-то?

Какие намерения, кого блокируют? Поясните вашу мысль.

Вы лучше не sp_lock используйте, а sys.dm_tran_locks, sys.dm_os_waiting_tasks и т.д.
select * from sys.dm_os_waiting_tasks where session_id = 111
— в поле blocking_session_id увидите spid блокирующего процесса.
select * from sys.dm_tran_locks where request_session_id in (111, <spid блокирующего процесса>)
— так увидите блокировки, наложенные процессом 111 и блокирующим процессом.
waszkiewicz
Дата: 07.02.2013 11:09:31
Блокировка с MODE=IX реально блокирует таблицу. Клиенты отваливаются по таймауту. Есть недопонимание в разнице между X и IX. Посему и вопрос
Гость333
Дата: 07.02.2013 11:26:54
waszkiewicz
Блокировка с MODE=IX реально блокирует таблицу.

Покажите, какой процесс блокируется этой блокировкой. Из вашего фрагмента sp_lock видно только ожидание на ресурсе KEY (ffffffffffff), тип запрашиваемой блокировки — RangeIn. И это не блокировка намерения.
waszkiewicz
Дата: 07.02.2013 11:29:12
следующие 2 строки указывают явно на IX GRANT
Гость333
Дата: 07.02.2013 11:38:56
waszkiewicz
следующие 2 строки указывают явно на IX GRANT

GRANT означает, что запрошенная блокировка получена. Процесс из-за неё не простаивает.
WAIT — "Блокировка занята другим процессом, удерживающим блокировку в конфликтном режиме" (цитата из BOL).
waszkiewicz
Дата: 07.02.2013 11:50:12
Правильно понимаю - spid=111 запросил IX и ее получил. Далее, довольный, держит страницу 1:4545709, что мешает другим процессам обратиться к этой странице?
Далее, kill 111 освобождает данную страницу к всеобщей радости
Так?
daw
Дата: 07.02.2013 11:53:48
> Далее, довольный, держит страницу 1:4545709, что мешает другим процессам обратиться к этой странице?

не просто обратиться, а заблокировать страницу _целиком_. или таблицу (IX на TAB).