![]() |
#1 |
Участник
|
Блокировки Базы данных Ax2012 R2
Добрый день,
Вот такой SQL запрос не может выполниться, т.к. обращается к ресурсу, который в данный момент используется. Код: (@P1 int,@P2 int,@P3 bigint,@P4 int)UPDATE BOMLEVELRECALCULATION SET BOMLEVELRECALCULATIONNEEDED=@P1,RECVERSION=@P2 WHERE ((RECID=@P3) AND (RECVERSION=@P4)) У меня такой вопрос. А как Аксапта сформаровала запрос с полем RecVersion. Вроде оно обычно не используюется в select-ах? |
|
![]() |
#2 |
Участник
|
Это ядро, это поле нужно для того, чтобы поймать блокировки обновления записи при использовании OCC. Подробнее вот тут https://msdn.microsoft.com/en-us/library/bb190073.aspx
__________________
Sergey Nefedov |
|
|
За это сообщение автора поблагодарили: Vadik (1), petr (1). |
![]() |
#3 |
Участник
|
Цитата:
Сообщение от SRF
![]() Это ядро, это поле нужно для того, чтобы поймать блокировки обновления записи при использовании OCC. Подробнее вот тут https://msdn.microsoft.com/en-us/library/bb190073.aspx
Код: update myTable setting Field1 = 'A' where myTable.RecId == 100 Код: update myTable setting Field1 = 'A', RecVersion = 124 where myTable.RecId == 100 && myTable.RecVersion == 123 |
|
![]() |
#4 |
Модератор
|
Цитата:
Я правильно понимаю
__________________
-ТСЯ или -ТЬСЯ ? |
|
![]() |
#5 |
Участник
|
Я только не понимаю почему данный SQL-запрос ждет выполнения другого запроса, а не выполняется спокойно себе. Получается ВСЯ таблица каким-то другим запросом заблокирована?
|
|
![]() |
#6 |
Модератор
|
Залочено где-то на уровне выше единичной записи - смотрите что у вас 63 "держит"
__________________
-ТСЯ или -ТЬСЯ ? |
|
|
За это сообщение автора поблагодарили: petr (1). |
![]() |
#7 |
Moderator
|
Есть шансы что у вас там оптимизатор запросов сошел с ума и использует индекс не по recId, а какой-то более другой. Попробуйте сбросить кэш запросов (через DBCC FREEPROCCACHE()), и перестроить индексы по этой таблице (Хотя там всего одна запись по факту
![]() |
|
|
За это сообщение автора поблагодарили: petr (1). |
Теги |
ax2012, occ |
|
|