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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.08.2008, 13:34   #1  
greench is offline
greench
Участник
Oracle
 
425 / 74 (3) ++++
Регистрация: 12.07.2007
Адрес: Киев
Цитата:
Сообщение от belugin Посмотреть сообщение
А в EventLog что?
Вот это мне и нужно было, не знал просто где смотреть. Думал такие ошибки аксапта пишет в какие-то свои логи.

Спасибо.
Старый 07.08.2008, 13:42   #2  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Вот простенький джобец, который позволяет локализовать проблемную таблицу.

X++:
//DSPIC
static void synchronizationCheck(Args _args)
{
    Dictionary              dictionary = new Dictionary();
    TableId                 tableId;
    RunbaseProgress         runbaseProgress = new RunbaseProgress();
    ;


    tableId = dictionary.tableNext(tableId);

    runbaseProgress.setTotal(dictionary.tableCnt());
    runbaseProgress.setCaption("SynchronizationCheck");

    while (tableId)
    {
        appl.dbSynchronize(tableId, false, true, false);

        runbaseProgress.setText(tableId2Name(tableId));

        info (strfmt("Table '%1' - OK", tableId2Name(tableId)));

        runbaseProgress.incCount();

        tableId = dictionary.tableNext(tableId);
    }
}
Старый 08.08.2008, 11:12   #3  
Bishop is offline
Bishop
Участник
 
89 / 60 (3) ++++
Регистрация: 12.08.2004
Адрес: Москва
Цитата:
Сообщение от DSPIC Посмотреть сообщение
Вот простенький джобец, который позволяет локализовать проблемную таблицу.
По-моему, некорректный джобец. Во-первых, он работает до первой ошибки, во-вторых, имя таблицы с ошибкой как раз не выводится, а в инфологе только куча строк "Table xxx - ОК".

Вчера как раз тоже написал подобный джоб, может кому пригодится:
X++:
// Синхронизация с выводом наименований "неправильных" таблиц
static void DbSynchronize(Args _args)
{
    #AviFiles
    Dictionary              dictionary;
    DictTable               dictTable;
    int                     i;
    SysOperationProgress    progress;
    ;
    dictionary = new Dictionary();
    progress = SysOperationProgress::newGeneral(#AviUpdate, "Синхронизация", dictionary.tableCnt());
    for (i = 1; i <= dictionary.tableCnt(); i++)
    {
        dictTable = new DictTable(dictionary.tableCnt2Id(i));
        if  (dictTable.isSql() &&
                (
                    !dictTable.configurationKeyId()    ||
                    isConfigurationkeyEnabled(dictTable.configurationKeyId())
                )
            )
        {
            try
            {
                progress.setText(dictTable.name());
                progress.setCount(i);
                if (!appl.dbSynchronize(dictTable.id(), false, true, false))
                {
                    warning(strfmt("Проблемы с таблицей %1 (Id = %2)!", dictTable.name(), dictTable.id()));
                }
            }
            catch (Exception::Error)
            {
                warning(strfmt("Проблемы с таблицей %1 (Id = %2)!", dictTable.name(), dictTable.id()));
            }
        }
    }
    info("Синхронизация завершена");
}
По опыту, проблемы при синхронизации возникают в основном в двух случаях:
- некорректные данные в таблице SqlDictionary (чаще всего - их отсутствие),
- нарушение уникального индекса (самая "попса" - табличка InventDim при отключении складской аналитики)
За это сообщение автора поблагодарили: DarLord (0).
Старый 08.08.2008, 11:42   #4  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Цитата:
По-моему, некорректный джобец. Во-первых, он работает до первой ошибки, во-вторых, имя таблицы с ошибкой как раз не выводится, а в инфологе только куча строк "Table xxx - ОК".
Не то чтобы некорректный, просто красивости делать не предполагалось. Просто запустил, он вывалился на ошибке, посмотрел в инфологе последнюю удачно засинхронизированную таблицу, нашел в АОТ следующую-проблемную. + помнится, когда я этот джоб писал, у меня не отрабатывал catch при ошибке синхронизации - я уж не стал разбираться почему - и так понятно где проблема. А у вас он отрабатывает?!

Цитата:
Вчера как раз тоже написал подобный джоб...
Старый 08.08.2008, 12:07   #5  
Bishop is offline
Bishop
Участник
 
89 / 60 (3) ++++
Регистрация: 12.08.2004
Адрес: Москва
Цитата:
Сообщение от DSPIC Посмотреть сообщение
Просто запустил, он вывалился на ошибке, посмотрел в инфологе последнюю удачно засинхронизированную таблицу, нашел в АОТ следующую-проблемную.
Интересно - как это? Синхронизация не в алфавитном порядке же идет...

Цитата:
Сообщение от DSPIC Посмотреть сообщение
+ помнится, когда я этот джоб писал, у меня не отрабатывал catch при ошибке синхронизации - я уж не стал разбираться почему - и так понятно где проблема. А у вас он отрабатывает?!
Отрабатывает , но возможно что не во всех случаях. Вчера была проблема с отсутствием данных в SqlDictionary - там выкидывается Exception::Error (соответственно, ловится).
Теги
ax4.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Пересоздание таблицы при синхронизации Serg16 DAX: Администрирование 1 26.08.2009 13:55
Ошибка при синхронизации таблицы Eldar9x DAX: Программирование 2 27.02.2009 15:19
ошибки синхронизации Azat DAX: Программирование 1 14.01.2005 13:32
Проблема синхронизации при установке SP3 на SP2 v3.0 ravil DAX: Администрирование 6 23.06.2004 17:20
Влияет ли содержимое таблицы SQLSTORAGE на процесс синхронизации? Maxim Gorbunov DAX: Администрирование 1 21.06.2004 17:59
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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