slyke
Дата: 22.01.2009 11:31:46
У меня все никак не получается вопроизвести этот дедлок локально, видимо процедура и селект все время разные страницы запрашивают.
Процедура тянет данные через линкованный сервер и вставляет их в таблицу из которой и делается селект во втором конекшене.
Селект выполняется с периодичностью где-то раз в 10 секунд.
Понятно, что ставить with (tablock) при инсерте вариант плохой (т.к. делается insert into ... select через линкованный сервер). У меня идея поставить with (xlock, paglock) в селекте из этой таблицы.
Тогда на время выполнения селекта на нужные страницы наложится монопольная блокировка, и если процедуре понадобиться вставить данные на те же страницы, которые монопольно заблокированы селектом, то процедура будет ждать завершения селекта, что приводит к исчезновению дедлока.
И такой вопрос: достаточно ли просто указать with (xlock)?
Или без графа в текстовом виде вам сложно что-то сказать?
slyke
Дата: 23.01.2009 15:04:08
У меня возникла проблема с определением объекта, id которого указывается в графе дедлока: associated objid: ... В базе обектов нету, может я не то ищу?