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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.01.2012, 06:47   #1  
skof is offline
skof
NavAx
NavAx Club
 
100 / 12 (1) ++
Регистрация: 09.01.2002
Адрес: РБ, Минск
Падает стандартный импорт с ошибкой "Вызов ttscommit без вызова ttsbegin"
Добрый день, коллеги!
Ситуация такая:
DAX4.0, Версия ядра 4.0.2501.116, версия приложения 4.0.2501.348, база данных MS SQL 2005.
Проблема следующая - при импорте большого объема данных (около 2Гб dat-файл) система падает с ошибкой "Вызов ttscommit без вызова ttsbegin".
Кто сталкивался с этим? Как боролся?
На форуме искал, но не нашел.
__________________
Начать что-либо, никогда не поздно - просто начни сейчас.
Старый 19.01.2012, 07:52   #2  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Поиск источника ошибки
Старый 19.01.2012, 08:51   #3  
skof is offline
skof
NavAx
NavAx Club
 
100 / 12 (1) ++
Регистрация: 09.01.2002
Адрес: РБ, Минск
Спасибо огромное, Вы мне очень помогли.
Но!
1. Я умею искать источник ошибки.
2. Для того, чтобы ее повторить мне надо ждать 5 часов, так как она проявляется под конец загрузки.
3. Я указал место возникновения ошибки, могу уточнить - класс SysDataImport, метод ImportBuffer строка 23.
4. Я задал конкретный вопрос - есть ли опыт фикса именно падения импорта именно с такой ошибкой.
__________________
Начать что-либо, никогда не поздно - просто начни сейчас.
Старый 19.01.2012, 09:22   #4  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от skof Посмотреть сообщение
Спасибо огромное, Вы мне очень помогли
Не за что
Цитата:
Сообщение от skof Посмотреть сообщение
3. Я указал место возникновения ошибки, могу уточнить - класс SysDataImport, метод ImportBuffer строка 23.
Уже что-то.

Хм. интересный код
X++:
    // --------------
    if (readCnt mod 1000 == 0)
    {
        readCntInTrans = 1; //set counter to one because currently one record is processing

        ttscommit;
        ttsbegin;
    }
Видимо служит для того чтобы длинный импорт разбивать на отдельные транзакции (по 1000 строк в каждой).

Есть безумное предположение, что счётчик readCnt типа Integer может переполнится (2Гб dat-файл всё-таки). Попробуйте изменить на int64. А вдруг?
Старый 19.01.2012, 09:41   #5  
skof is offline
skof
NavAx
NavAx Club
 
100 / 12 (1) ++
Регистрация: 09.01.2002
Адрес: РБ, Минск
Там всего 258 таблиц, в самой большой чуть больше 800 000 записей. Так что через int а это 4 миллиарда никак не перескочит.

Кроме того, предположим поломался этот счетчик? И что оно же попадает на эту строчку повторно. Т.е. где-то срабатывает лишний ttscommit. Вопрос - где? С учетом того что на подготовку переноса мне осталось менее 20 часов, я не могу себе позволить повторно запустить. Вот и спрашиваю, ну а пока готовлю запасной аэродром.
__________________
Начать что-либо, никогда не поздно - просто начни сейчас.

Последний раз редактировалось skof; 19.01.2012 в 09:43.
Старый 19.01.2012, 14:36   #6  
_scorp_ is offline
_scorp_
Участник
Аватар для _scorp_
MCBMSS
 
488 / 369 (13) ++++++
Регистрация: 25.07.2007
Адрес: Москва
Скорее всего эта ошибка (непарный вызов ttsbegin/ttscommit) закралась где-то в коде, который вызывается на insert таблицы. Попробуйте в файле для импорта оставить по одной записи для каждой таблицы и поймайте в отладчике. Ну или на info.add напишите логирование со стеком вызова.
Старый 19.01.2012, 17:12   #7  
rDenis2 is offline
rDenis2
Участник
 
62 / 36 (2) +++
Регистрация: 13.05.2010
Если tts level больше одного, и где то в коде вызывается ttsabort то он сбрасывает tts level сразу в 0.
Т.е. если дальше в коде есть любой ttscommit, это вызовет ошибку.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
dynamics-ax-dev: CLR Errors & ttsbegin/ttscommit Blocks Blog bot DAX Blogs 0 02.11.2010 18:05
ttsbegin ttscommit and changecompany() Volodymyr DAX: Программирование 9 29.08.2008 15:36
Стандартный импорт данных. Обновление sparur DAX: Функционал 0 24.03.2008 19:07
Падает форма "Деловые отношения" Hamster DAX: Функционал 2 04.11.2004 12:21
Вложенные транзакции ttsbegin\ttscommit dn DAX: Программирование 9 19.01.2004 17:07
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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