AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Администрирование
DAX
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.01.2017, 14:54   #1  
petr is offline
petr
Участник
Соотечественники
 
557 / 201 (8) ++++++
Регистрация: 30.05.2005
Адрес: Швейцария
Блокировки Базы данных Ax2012 R2
Добрый день,

Вот такой SQL запрос не может выполниться, т.к. обращается к ресурсу, который в данный момент используется.

Код:
(@P1 int,@P2 int,@P3 bigint,@P4 int)UPDATE BOMLEVELRECALCULATION SET BOMLEVELRECALCULATIONNEEDED=@P1,RECVERSION=@P2 WHERE ((RECID=@P3) AND (RECVERSION=@P4))
Контекст.
Нажмите на изображение для увеличения
Название: SQL_Locks.PNG
Просмотров: 453
Размер:	17.7 Кб
ID:	11156

У меня такой вопрос. А как Аксапта сформаровала запрос с полем RecVersion. Вроде оно обычно не используюется в select-ах?
Старый 25.01.2017, 15:05   #2  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
365 / 542 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Это ядро, это поле нужно для того, чтобы поймать блокировки обновления записи при использовании OCC. Подробнее вот тут https://msdn.microsoft.com/en-us/library/bb190073.aspx
__________________
Sergey Nefedov
За это сообщение автора поблагодарили: Vadik (1), petr (1).
Старый 25.01.2017, 15:35   #3  
petr is offline
petr
Участник
Соотечественники
 
557 / 201 (8) ++++++
Регистрация: 30.05.2005
Адрес: Швейцария
Цитата:
Сообщение от SRF Посмотреть сообщение
Это ядро, это поле нужно для того, чтобы поймать блокировки обновления записи при использовании OCC. Подробнее вот тут https://msdn.microsoft.com/en-us/library/bb190073.aspx
Я правильно понимаю, что ядро само когда считает нужным подставляет к запросу
Код:
update myTable setting Field1 = 'A' where myTable.RecId == 100
от себя && myTable.RecVersion == 123 и получается следующее:

Код:
update myTable setting Field1 = 'A', RecVersion = 124 where myTable.RecId == 100 && myTable.RecVersion == 123
Старый 25.01.2017, 15:48   #4  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Я правильно понимаю
Так точно. И если кто-то уже влез перед нами со своим обновлением и изменил RecVersion (это разрешено в оптимистичной модели, подробности по ссылке выше), мы получим 0 records affected и соответственно UpdateConflict исключение
__________________
-ТСЯ или -ТЬСЯ ?
Старый 25.01.2017, 16:24   #5  
petr is offline
petr
Участник
Соотечественники
 
557 / 201 (8) ++++++
Регистрация: 30.05.2005
Адрес: Швейцария
Цитата:
Сообщение от Vadik Посмотреть сообщение
Так точно. И если кто-то уже влез перед нами со своим обновлением и изменил RecVersion (это разрешено в оптимистичной модели, подробности по ссылке выше), мы получим 0 records affected и соответственно UpdateConflict исключение
Я только не понимаю почему данный SQL-запрос ждет выполнения другого запроса, а не выполняется спокойно себе. Получается ВСЯ таблица каким-то другим запросом заблокирована?
Старый 25.01.2017, 16:48   #6  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от petr Посмотреть сообщение
Получается ВСЯ таблица каким-то другим запросом заблокирована?
Залочено где-то на уровне выше единичной записи - смотрите что у вас 63 "держит"
__________________
-ТСЯ или -ТЬСЯ ?
За это сообщение автора поблагодарили: petr (1).
Старый 25.01.2017, 17:35   #7  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,892 / 5650 (194) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Есть шансы что у вас там оптимизатор запросов сошел с ума и использует индекс не по recId, а какой-то более другой. Попробуйте сбросить кэш запросов (через DBCC FREEPROCCACHE()), и перестроить индексы по этой таблице (Хотя там всего одна запись по факту )
За это сообщение автора поблагодарили: petr (1).
Теги
ax2012, occ

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Axilicious:Running AX2012 R2 locally on Windows 2012 Server booted directly from VHD Blog bot DAX Blogs 0 16.04.2013 08:13
Axilicious:AX2012 R2 – Hidden compiler errors – Update Blog bot DAX Blogs 1 10.03.2013 09:31
kamalblogs: What’s coming in the future Ax 201X ? :) – KeyNote Day 2 @ Dynamics Ax2012 R2 Blog bot DAX Blogs 0 26.10.2012 02:11
SysSQLBlockingMSSQL - форма Блокировки пользователей базы данных DenisS DAX: Программирование 6 18.08.2009 17:23
Утилиты для работы с журналом базы данных vc DAX: База знаний и проекты 0 10.05.2008 17:40
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 08:40.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.