Показать сообщение отдельно
Старый 25.11.2011, 13:07   #6  
someOne is offline
someOne
Участник
Аватар для someOne
 
174 / 432 (15) +++++++
Регистрация: 11.12.2008
Адрес: Москва
Цитата:
Сообщение от DreamCreator Посмотреть сообщение
Доброе утро!

Вчера на рабочей базе появились отрицательные RecId -620715238, хотя за день до этого RecId был в районе 1367137064.

Хотелось бы узнать - есть ли способы узнать на какие таблицы были сгенерированы RecId?

Также интересуют особенности работы с отрицательными RecId. Про кратность 256 прочитал.

Спасибо!
Ax 3.0 SP3
В третьей версии аксапты у нас неоднократно, самопроизвольно RecId перескакивали на несколько млн или уходили в "минус". Закономерности определить не удалось. При этом никаких "внешних" обращений к БД, минуя ядро Аксапты, не производилось.

"Возвращать" recId на "место" можно и нужно.

Так как с отрицательными recId будет масса глюков в российском функционале (ЗП кадры и так далее - неоднократно обсуждалось на форуме) Либо исправлять все эти модули, (и не только Российские кстати, но там ошибок больше всего)

Использовали такой джоб для перевода счетчика:

X++:
static void Job9(Args _args)
{
    SystemSequences SystemSequences;
    Connection con = new Connection();
    Statement stmt;
    ;


    con.ttsbegin();

    stmt = con.createStatement();
    stmt.executeUpdate('UPDATE SystemSequences SET nextVal=456400000 WHERE (id=-1) and (DATAAREAID=\''+ "dat" +'\')'); // впишите тут вашу компанию
    con.ttscommit();


    select SystemSequences
    where (SystemSequences.id == -1) && (SystemSequences.dataAreaId == 'dat');


    info(chi_str(SystemSequences.nextVal)); // возвращает текущее значение счетчика
}
Дефрагментацию делать не стоит, пока есть большие свободные диапазоны RecId

Нужно лишь найти диапазоны не используемых recId.
Собрать свободные диапазоны RecId можно джобом, который может собрать статистику используемых recId по наиболее активным и крупным таблицам. Могу привести пример если нужно будет...

Последний раз редактировалось someOne; 25.11.2011 в 14:13.
За это сообщение автора поблагодарили: Pustik (1), Logger (2), DreamCreator (3).