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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.01.2011, 22:10   #1  
Qaz Qwerty is offline
Qaz Qwerty
китайский стажер
 
152 / 37 (2) +++
Регистрация: 12.05.2008
Ошибки синхронизации при upgrade
Случилось делать upgrade с DAX4 на DAX5, возникли ошибки синхронизации. То есть выдает сообщение "не удалось синхронизировать 8 таблиц", списка таблиц нет. Удалось победить следующим образом:
1. Выйти из мастера upgrade и войти в Аксапту (надо было хоть посмотреть что там еще не сделано, в этом мастере).
2. Список таблиц, которые не синхронизировались, совпал со списком таблиц, где были warnings, которые все были типа "New unique index named 'I_1938BALCOLIDX may cause unique index violations'."
3. Открываем administrative tool/event viewer/ windows logs / applications. Смотрим там сообщение об ошибке от Dynamics Server. Там есть список полей, которые должны быть уникальны. Почему то мне удалось это увидеть ни в аксапте, ни в MSSQL, название индекса мне ничего не говорит.
4. Открываем SQL management studio, и пишем там кверю типа SELECT count(dataareaid), COUNT(balancesheet), count(COLUMN_), dataareaid, balancesheet, COLUMN_ from LedgerBalColumnsDim GROUP BY dataareaid, balancesheet, COLUMN_
HAVING count(*) > 1 order by dataareaid, balancesheet, column_
Скажу честно в кверях я разбираюсь как свинья в апельсинах, так что может и получше способы есть.

Кверя выдает что есть мол такие записи и много. Там где мало - нет проблем поправить, но несколько таблиц имеют таких записей сотни. Потому что длина поля с названием отчета стала короче, был сделан truncate и возникли дубли. То есть пень я пнем, наверное это сообщение было в предупреждениях на момент update, но так как их там много было, а времени всегда мало, то были они проигнорированы.

Вопрос теперь что с этим делать. Собственно данные эти я могу экселем перести и можно табличку эту очистить вообще, хотя компаний много и поэтому ломает это делать. А ручками вычищать чего то не соображу как.
Может получше способы есть.
__________________
Может быть выйдет, а может не-е-е-ет...
Новая песня вместо штиблет..
Старый 14.01.2011, 23:43   #2  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от Qaz Qwerty Посмотреть сообщение
Потому что длина поля с названием отчета стала короче, был сделан truncate и возникли дубли. То есть пень я пнем, наверное это сообщение было в предупреждениях на момент update, но так как их там много было, а времени всегда мало, то были они проигнорированы
Времени было мало, говорите.. Программисты должны быть смелыми, говорите
Цитата:
Сообщение от Evolution
Nurse Tate: I'll get the lubricant...
Dr. Paulson: No time for lubricant!
Harry Block: There's ALWAYS time for lubricant!
Цитата:
А ручками вычищать чего то не соображу как
Вычищать нужно прежде всего головой. А так как времени у Вас мало, а данные уже потеряны (испорчены), "вычищать" - самое дурацкое из существующих решений (ну разве что Вы точно знаете что эти данные и вообще весь инстанс ничего не стоят)
Цитата:
Может получше способы есть
Конечно есть - восстанавливать БД из бэкапа на момент "до начала апгрейда", анализировать почему обрезались поля и исправлять
P.S. Искренне надеюсь, Вы этот экзерсис не на рабочей БД провели.. Ну или что лубриканты в наличии и срок годности не истек
__________________
-ТСЯ или -ТЬСЯ ?
Старый 15.01.2011, 03:02   #3  
Qaz Qwerty is offline
Qaz Qwerty
китайский стажер
 
152 / 37 (2) +++
Регистрация: 12.05.2008
Не, ну это конечно же копия.

Ну а что надо было делать? Оно же не выдает сообщение где будут дубликаты и где их не будет, то есть не выдает это сообщение перед truncate. Говорит, что обрежу, и говорит это чуть ли не на каждой второй таблице, ну может не на каждой второй, но все равно больше сотни. У меня вообще кастомизаций нет, длина полей стандартная, какого извините , то есть какой был великий смысл в новой версии системы делать ключевые поля короче? Или я что то не понимаю?

Ну удалю и перенесу ручками эти несколько таблиц, это финансовые отчеты пострадали, все равно грустно. Вообще изначальный план порепетировать перенос, а потом за выходные всю процедуру проделать еще раз. Наверное, я так не буду делать. Лучше журналы за последние пару недель ручками подгружу. Уж очень много править приходится и такое упражнение делать еще раз с нуля я не хочу.

Например, никто не знает почему при переходе виртуальные компании слетели (вернее коллекции таблиц)?
__________________
Может быть выйдет, а может не-е-е-ет...
Новая песня вместо штиблет..
Старый 15.01.2011, 13:34   #4  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от Qaz Qwerty Посмотреть сообщение
Открываем SQL management studio, и пишем там кверю типа SELECT count(dataareaid), COUNT(balancesheet), count(COLUMN_), dataareaid, balancesheet, COLUMN_ from LedgerBalColumnsDim GROUP BY dataareaid, balancesheet, COLUMN_ HAVING count(*) > 1 order by dataareaid, balancesheet, column_
В Аксапте есть штатная возможность найти дубликаты в индексах - в контекстном меню индекса Add-ins/Дубликаты.
Старый 15.01.2011, 22:30   #5  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от Qaz Qwerty Посмотреть сообщение
Например, никто не знает почему при переходе виртуальные компании слетели (вернее коллекции таблиц)?
У меня не проходит странное ощущение что Вы переход на следующую версию воспринимаете как запуск setup.exe какого-нибудь сервиспака. Как Вы вообще с версии на версию переходили?
__________________
-ТСЯ или -ТЬСЯ ?
Старый 15.01.2011, 22:34   #6  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от gl00mie Посмотреть сообщение
В Аксапте есть штатная возможность найти дубликаты в индексах - в контекстном меню индекса Add-ins/Дубликаты.
Она покореженные данные не восстанавливает, к сожалению. Так что только восстанавливаться из бэкапа
__________________
-ТСЯ или -ТЬСЯ ?
Старый 17.01.2011, 21:57   #7  
Qaz Qwerty is offline
Qaz Qwerty
китайский стажер
 
152 / 37 (2) +++
Регистрация: 12.05.2008
Vadik, брррр, я чего то не понимаю вопроса. Конечно, сетуп - sql и перенос базы данных на новый сервер, аксапты, сервис паков и запуск мастера upgrade. Что-то не так в этой процедуре?
Какой кстати смысл восстанавливать их бекап, все равно это проблему с разной длиной полей не решит, так ведь? Или вы мне предлагаете в качестве подготовки к upgrade в новой базе данных перекодировать все таблицы, где эти проблемы возникли, чтобы при truncate поля оставались уникальными? Вариант конечно, в общем примерно так и пришлось сделать, только не по всем таблицам.
Можно было еще отказаться от синхронизации и увеличить длину полей в тех таблицах, которые аксапта собирается обрезать, но я же говорю - сообщений о таких полях система выдала под сотню, а реально проблема возникла только в 8 таблицах, из них 5 удалось ручками поправить быстро, и только 3 реально нуждались в перекодировании, ну так руками пришлось сделать, несколько часов мороки.
А как это обойти?
__________________
Может быть выйдет, а может не-е-е-ет...
Новая песня вместо штиблет..
Старый 18.01.2011, 02:54   #8  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от Vadik Посмотреть сообщение
Она покореженные данные не восстанавливает
Я к тому про дубликаты написал, что можно было не изобретать велосипед.
Цитата:
Сообщение от Qaz Qwerty Посмотреть сообщение
Какой кстати смысл восстанавливать их бекап, все равно это проблему с разной длиной полей не решит, так ведь? Или вы мне предлагаете в качестве подготовки к upgrade в новой базе данных перекодировать все таблицы, где эти проблемы возникли, чтобы при truncate поля оставались уникальными? Можно было еще отказаться от синхронизации и увеличить длину полей в тех таблицах, которые аксапта собирается обрезать
В замечательной книге Программист-прагматик есть подглавка "Рассказ о резиновом утенке", в которой пишется о пользе объяснения кому-либо возникшей проблемы: подчас по ходу рассказа о ней решение находится само собой Еще более образно этот прием описан у Джона Робинсона в не менее замечательной книге Отладка приложений для Microsoft .NET:
Цитата:
Как выяснилось, мои кошки – отличные отладчики, и они помогли мне решить огромное количество действительно неприятных ошибок. Собирая их вокруг своего рабочего места, я рисую проблему на белой доске и позволяю кошкам воздействовать на меня своими магическими лучами. Конечно же, однажды я делал это, не приняв душ и будучи одетым в одни шорты, - было немного трудно объяснить ситуацию курьеру службы доставки, который все это время ошеломленно стоял у двери.
Цитата:
Сообщение от Qaz Qwerty Посмотреть сообщение
но я же говорю - сообщений о таких полях система выдала под сотню, а реально проблема возникла только в 8 таблицах, из них 5 удалось ручками поправить быстро, и только 3 реально нуждались в перекодировании, ну так руками пришлось сделать, несколько часов мороки.
С 4-ки на 2009-ю не переходил, врать не буду, но при переходе с 3-ки также вылезали "проблемные места", связанные с усечением полей, в количестве 160 штук:
  • 78% касалась типа Filename и производных от него, которые с 260-и символов были обрезаны до 259 (видимо, разработчики вспомнили, что виндовая константа MAX_PATH подразумевает включение в 260 символов пути и завершающего нулевого символа, в то время как в БД Аксапты строковые данные - и пути к файлам в том числе - хранятся без завершающих нулей);
  • 6% - укорачивания EDT BankChequeNum с 30 до 20 символов;
  • 3% - укорачивания EDT BankRegNum с 14 до 12 символов;
  • часть была связана с "пропажей" некоторых EDT, из-за чего длина полей уменьшилась до своего значения по умолчанию - 10 символов.
Всего различных случаев уменьшения длины строковых полей, не связанных с пропажей EDT, было 9 штук, т.е. вполне себе вменяемое число для рассмотрения каждого случая по отдельности. Если таблицы реально важные, то почему бы и не увеличить длину EDT ради сохранности данных?
Теги
ax2009, обновление, синхронизация

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Sample Design Patterns: Upgrade to Microsoft Dynamics AX 2009 and issues with the global address book Blog bot DAX Blogs 0 21.12.2010 11:11
Pre-upgrade duplication detection form Evgeniy2020 DAX: Программирование 1 04.08.2010 17:28
ошибки синхронизации в DAX 4.0 Nikolaich DAX: Администрирование 7 26.04.2010 10:56
DynamicsAxSCM: Quality Management in Dynamics AX 2009 - Upgrade essentials Blog bot DAX Blogs 0 16.12.2008 14:05
ошибки синхронизации Azat DAX: Программирование 1 14.01.2005 13:32
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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