|  26.03.2007, 18:14 | #1 | 
| Участник |  сброс блокировок при update 
			
			Dear All! (AX 3.0 SP3 + SQL Server 2005 SP2 x64) Довольно часто попадающийся код X++: ttsbegin; ... select forupdate Table ...; ... Table.update(); ... ttscommit; Отслеживал профайлером блокировки, но, не знаю по какой причине, не ловятся Lock Release. Может, глюк какой... А вопрос следующий: когда происходит снятие блокировок на update? После Table.update()? Или после ttscommit? Или после выхода из метода и "ликвидации" экземпляра Table? Вопрос к тем, кто на практике это наблюдал... | 
|  | 
|  26.03.2007, 18:25 | #2 | 
| Участник | 
			
			А вот так X++: ttsbegin; pause; select forupdate Table ...; pause; Table.update(); pause; ttscommit; pause; | 
|  | 
|  26.03.2007, 21:37 | #3 | 
| Участник | 
			
			Не раньше последнего ttsCommit Возможно что у вас этот код был внутри другой транзакции - потому блокировки не снимались и вы не видели их Lock Release. Посомтрите в коде значение Application.ttsLevel() Пока её значение отлично от 0 - не должно быть освобождения от блокировок. В отладчике можно непосредственно увидеть в строке статуса уровень вложенности текущей транзакции, так что можно просто отладчиком пройтись. Последний раз редактировалось Logger; 26.03.2007 в 21:41. Причина: опечатки | 
|  | 
|  27.03.2007, 11:31 | #4 | 
| Участник | 
			
			2belugin 2Logger Спасибо! 2belugin Насчёт pause: на рабочей Аксапте, к сожалению, это невозможно... А на тестовой можно - просто не сообразил... | 
|  |