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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.05.2011, 22:19   #1  
Qaz Qwerty is offline
Qaz Qwerty
китайский стажер
 
152 / 37 (2) +++
Регистрация: 12.05.2008
Все таки меня напрягает вот какой момент. Есть job простой как 2 копейки:
Так вот во-первых, этот job завершает работу, пройдя не по всему плану счетов, без всяких сообщений об ошибке. Во-вторых, он выбирает счета не в алфавитном порядке, хотя должен выбирать согласно индексу на AccountNum. Это полный бред. Может это как то связано, что план счетов в виртуальной компании (shared table)? но такого никогда не было.

X++:
   while select forupdate LedgerTable
             {
              if (substr(LedgerTable.AccountNum,1,1) != 'A')
              {
                  ttsbegin;
                         LedgerTable.AccountNum = "A"+LedgerTable.AccountNum;
                         LedgerTable.renamePrimaryKey();
                   ttscommit;
               }
             }
__________________
Может быть выйдет, а может не-е-е-ет...
Новая песня вместо штиблет..
Старый 29.05.2011, 22:58   #2  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
все как то очень странно... но чудес не бывает

покажите запрос, который уходит в базу, по последнему примеру (выборке по LedgerTable).

P.S. кстати, глобальную компиляцию пробовали?
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 30.05.2011, 19:36   #3  
Qaz Qwerty is offline
Qaz Qwerty
китайский стажер
 
152 / 37 (2) +++
Регистрация: 12.05.2008
Цитата:
Сообщение от lev Посмотреть сообщение
покажите запрос, который уходит в базу, по последнему примеру (выборке по LedgerTable).
P.S. кстати, глобальную компиляцию пробовали?
Компиляцию пробовали, конечно. Сколько ж раз ее можно делать?
А запрос, который делается в случае rename primary key, я даже ловить не буду. Думаю это куча запросов, на основе перебора всех reference к ledgertable.
__________________
Может быть выйдет, а может не-е-е-ет...
Новая песня вместо штиблет..
Старый 29.05.2011, 23:13   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Qaz Qwerty Посмотреть сообщение
Так вот во-первых, этот job завершает работу, пройдя не по всему плану счетов, без всяких сообщений об ошибке.
вы делаете выборку ВНЕ транзакции, а потом ЭТУ ЖЕ выборку обновляете изнутри (renamePrimaryKey - это тот же update с доп.действиями). Поведение курсора для таких случаев не определено - такая выборка может как остановится, так и пройстись несколько раз по одной записи.

если уж так хотите внутреннюю транзакцию, то заведите LedgerTrans2 и обновляйте его.

Цитата:
Сообщение от Qaz Qwerty Посмотреть сообщение
Во-вторых, он выбирает счета не в алфавитном порядке, хотя должен выбирать согласно индексу на AccountNum. Это полный бред.
Нет, это нормально.
В запросе не указан ни индекс, ни сортировка. Поэтому SQL может выбрать любой порядок, удобный для него.



виртуальность компании не должна влиять.
__________________
полезное на axForum, github, vk, coub.
Старый 30.05.2011, 00:36   #5  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,342 / 3563 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от mazzy Посмотреть сообщение
В запросе не указан ни индекс, ни сортировка. Поэтому SQL может выбрать любой порядок, удобный для него.
Маленькая поправка. Если в запросе не указан ни индекс, ни сортировка, но на таблице присутствует кластерный индекс - то выборка будет осуществляться с сортировкой по кластерному индексу (просто так данные на диске в таком порядке расположены).
Собственно - на всех справочниках в АХ обычно присутствует кластерный индекс, ибо Best Practice его ставить рекомендует на ключевое поле совместно с первичным индексом.

А вот чего бы я посоветовал бы сделать - так это обратить внимание на фрагментацию таблиц без кластерного индекса. Реиндексация конечно свое дело сделала ... для таблиц, у которых уже есть кластерный индекс. А вот таблицы без кластерного индекса - могут быть сильно фрагментированы. Тут поможет команда
PHP код:
DBCC SHOWCONTIG('tablename'
для отдельно взятой таблицы.

НО! Тут надо смотреть. Если проблема на табличке без кластерного индекса - то тогда "это оно". Если нет, и проблема явно в дисках - то тут нужно думать в другом направлении. Если бы у Вас был бы Recovery Model=Full - то я бы обратил внимание на то, на какой диск пишется Shipping Log - ибо частые снимки базы не могут не напрягать диски.
__________________
Возможно сделать все. Вопрос времени
Теги
ax2009, upgrade, производительность, тормоза

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
dax 2009. загрузка кладр. epic DAX: Функционал 17 09.08.2010 12:20
Ограничения CLR Interop в DAX (4.0, 2009) alex55 DAX: Программирование 7 18.03.2010 12:37
Переход на DAX 2009. Проблема с повторяющимися id таблиц. Как исправить? Murlin DAX: Программирование 18 02.11.2009 15:42
emeadaxsupport: List of fixes that improve performance of certain features in Dynamics AX 2009 Blog bot DAX Blogs 0 13.10.2009 19:06
axStart: Microsoft Dynamics AX 2009 Hot Topics Web Seminar Series Blog bot DAX Blogs 0 06.08.2008 12:05
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 07:36.