|
14.01.2011, 22:10 | #1 |
китайский стажер
|
Ошибки синхронизации при 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 |
Модератор
|
Цитата:
Цитата:
Сообщение от 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 |
китайский стажер
|
Не, ну это конечно же копия.
Ну а что надо было делать? Оно же не выдает сообщение где будут дубликаты и где их не будет, то есть не выдает это сообщение перед truncate. Говорит, что обрежу, и говорит это чуть ли не на каждой второй таблице, ну может не на каждой второй, но все равно больше сотни. У меня вообще кастомизаций нет, длина полей стандартная, какого извините , то есть какой был великий смысл в новой версии системы делать ключевые поля короче? Или я что то не понимаю? Ну удалю и перенесу ручками эти несколько таблиц, это финансовые отчеты пострадали, все равно грустно. Вообще изначальный план порепетировать перенос, а потом за выходные всю процедуру проделать еще раз. Наверное, я так не буду делать. Лучше журналы за последние пару недель ручками подгружу. Уж очень много править приходится и такое упражнение делать еще раз с нуля я не хочу. Например, никто не знает почему при переходе виртуальные компании слетели (вернее коллекции таблиц)?
__________________
Может быть выйдет, а может не-е-е-ет... Новая песня вместо штиблет.. |
|
15.01.2011, 22:30 | #4 |
Модератор
|
У меня не проходит странное ощущение что Вы переход на следующую версию воспринимаете как запуск setup.exe какого-нибудь сервиспака. Как Вы вообще с версии на версию переходили?
__________________
-ТСЯ или -ТЬСЯ ? |
|
17.01.2011, 21:57 | #5 |
китайский стажер
|
Vadik, брррр, я чего то не понимаю вопроса. Конечно, сетуп - sql и перенос базы данных на новый сервер, аксапты, сервис паков и запуск мастера upgrade. Что-то не так в этой процедуре?
Какой кстати смысл восстанавливать их бекап, все равно это проблему с разной длиной полей не решит, так ведь? Или вы мне предлагаете в качестве подготовки к upgrade в новой базе данных перекодировать все таблицы, где эти проблемы возникли, чтобы при truncate поля оставались уникальными? Вариант конечно, в общем примерно так и пришлось сделать, только не по всем таблицам. Можно было еще отказаться от синхронизации и увеличить длину полей в тех таблицах, которые аксапта собирается обрезать, но я же говорю - сообщений о таких полях система выдала под сотню, а реально проблема возникла только в 8 таблицах, из них 5 удалось ручками поправить быстро, и только 3 реально нуждались в перекодировании, ну так руками пришлось сделать, несколько часов мороки. А как это обойти?
__________________
Может быть выйдет, а может не-е-е-ет... Новая песня вместо штиблет.. |
|
18.01.2011, 02:54 | #6 |
Участник
|
Я к тому про дубликаты написал, что можно было не изобретать велосипед.
Цитата:
Сообщение от Qaz Qwerty
Какой кстати смысл восстанавливать их бекап, все равно это проблему с разной длиной полей не решит, так ведь? Или вы мне предлагаете в качестве подготовки к upgrade в новой базе данных перекодировать все таблицы, где эти проблемы возникли, чтобы при truncate поля оставались уникальными? Можно было еще отказаться от синхронизации и увеличить длину полей в тех таблицах, которые аксапта собирается обрезать
Цитата:
Как выяснилось, мои кошки – отличные отладчики, и они помогли мне решить огромное количество действительно неприятных ошибок. Собирая их вокруг своего рабочего места, я рисую проблему на белой доске и позволяю кошкам воздействовать на меня своими магическими лучами. Конечно же, однажды я делал это, не приняв душ и будучи одетым в одни шорты, - было немного трудно объяснить ситуацию курьеру службы доставки, который все это время ошеломленно стоял у двери.
Цитата:
|
|
15.01.2011, 13:34 | #7 |
Участник
|
Цитата:
Сообщение от 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_
|
|
15.01.2011, 22:34 | #8 |
Модератор
|
Она покореженные данные не восстанавливает, к сожалению. Так что только восстанавливаться из бэкапа
__________________
-ТСЯ или -ТЬСЯ ? |
|
Теги |
ax2009, обновление, синхронизация |
|
|