středa 12. května 2010

Synchronizace databáze v AX 4

Aktuálně dokončuji upgrade jedné implementace z AX3 na AX4 a odnesl jsem si z toho pár postřehů. První postřeh je staronový - postupně totiž zapomínám, co jak funguje ve starých verzích AX. Pokud selže synchronizace databáze v AX2009, objeví se formulář se seznamem problémů. V AX4 se obvykle dozvíte jen Cannot execute a data definition language command on (). The SQL database has issued an error. A nevíte ani, která tabulka to způsobila. Následující job umožní zjistit jména problémových tabulek. Bylo by možné modifikovat přímo dbSynchronize(), ale implementace nezávislého jobu je jednodušší.
Dictionary dict = new Dictionary();
TableId tableId;
;

setPrefix("Synchronizace DB");
tableId = dict.tableNext(0);

while (tableId)
{
    setPrefix(tableId2Name(tableId));
    try
    {
        appl.dbSynchronize(tableId, false);
    }
    catch {}
    tableId = dict.tableNext(tableId);
}

Tyto komplikace vidím to jako další argument, proč raději upgradovat přímo na AX2009…

1 komentář:

  1. ja k tomu pouzivam job forceDbSynchronize stazenej z nakyho ruskyho fora a zatim nezklamal :)

    http://mail.imh.cz/~drahosh/mediatel/install/CIR_forceDbSynchronize.xpo

    OdpovědětSmazat