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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.06.2010, 07:11   #1  
jaran is offline
jaran
Участник
 
20 / 15 (1) ++
Регистрация: 24.12.2004
Не срабатывает skipDatabaseLog(true)
установлена MBS Axapta 3.0 CIS SP3 Build #9.2, MS SQL 2000

Перед удалением данных в таблице вызываются методы
skipDatabaseLog(true)
skipDeleteActions(true)
skipDeleteMethod(true)
но при этом данные в таблицу SysDatabaseLog почему-то попадают!!!
Старый 15.06.2010, 08:11   #2  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
В AX2009 была обнаружена подобная ситуация. Массовое удаление записей через CCADOConnection
Цитата:
Сообщение от mazzy Посмотреть сообщение
Если в ax2009 настроить Database Log И отключить его в коде, то запись в Database Log все равно пишется, но один раз на весь Delete_from и с пустым контейнером.

А в вашем случае что именно пишется в лог?
Старый 15.06.2010, 08:59   #3  
jaran is offline
jaran
Участник
 
20 / 15 (1) ++
Регистрация: 24.12.2004
Пишется информация по всем удаленным записям.
Может быть проблема от того, что стоит клиентская часть более новая, чем приложение? (Клиент - SP6, приложение SP3)
Старый 15.06.2010, 14:16   #4  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
По-моему всегда так и было.
skipDataBaseLog() влиял только на удаление и обновление выполняемое конструкциями

X++:
delete_from
update_recordset
Если же просто вызывать
X++:
delete()
update()
то не работало.
Старый 15.06.2010, 19:10   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от jaran Посмотреть сообщение
Может быть проблема от того, что стоит клиентская часть более новая, чем приложение? (Клиент - SP6, приложение SP3)
Нет, версия приложения тут не причем.

Цитата:
Сообщение от Logger Посмотреть сообщение
По-моему всегда так и было.
skipDataBaseLog() влиял только на удаление и обновление выполняемое конструкциями

X++:
delete_from
update_recordset
Если же просто вызывать
X++:
delete()
update()
то не работало.
Разве? Конечно надо проверить, но skip действовал всегда, насколько я помню.
__________________
полезное на axForum, github, vk, coub.
Старый 15.06.2010, 19:22   #6  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Вопрос, что включено в логирование бд. Была же похожая ситуация на форуме пару недель назад.

С Уважением,
Георгий
Старый 15.06.2010, 20:01   #7  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
У меня не получалось добиться пропуска логирования для
delete()
update()

Сам удивлялся.
Старый 08.04.2011, 19:56   #8  
Hyper is offline
Hyper
Участник
Соотечественники
 
163 / 29 (1) +++
Регистрация: 09.10.2003
Подниму-ка я эту тему.
Axapta 3.0 SP4, MS SQL Server 2000

SysDataBaseLog.insert() срабатывает при выполнении следующего кода:

X++:
static void Job6(Args _ars)
{
    VendTable vendTable;
    ;

    ttsbegin;

    vendTable.skipDatabaseLog(true);

    select forupdate firstonly vendTable
        where vendTable.AccountNum == "000002_313";

    vendTable.Name = 'Test9';

    vendTable.doUpdate();

    ttscommit;
}

Есть в тройке какая-то возможность заставить изменения не писаться в SysDataBaseLog?
Старый 08.04.2011, 20:06   #9  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
использовать update_recordset
а также еще вызвать skipDataMethods(true)
Старый 08.04.2011, 20:15   #10  
Hyper is offline
Hyper
Участник
Соотечественники
 
163 / 29 (1) +++
Регистрация: 09.10.2003
Цитата:
Сообщение от Logger Посмотреть сообщение
использовать update_recordset
а также еще вызвать skipDataMethods(true)
skipDataMethods не помогает (я все скипы пробовал ), а делать update_recordset индивидуально для каждой из сотен тысяч записей - идея интересная.

Я правильно понимаю, что skipDatabaseLog должен работать только для update_recordset, это функционал согласно дизайна Аксапты?
Старый 08.04.2011, 20:30   #11  
Hyper is offline
Hyper
Участник
Соотечественники
 
163 / 29 (1) +++
Регистрация: 09.10.2003
Проверил в AX 2009
Убедился, что в AX 2009 такой проблемы нет. skipDataBaseLog(true) вполне успешно отключает логирование.

В тройке это как-то лечится, никто не знает?
Старый 08.04.2011, 20:36   #12  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Hyper Посмотреть сообщение
skipDataMethods не помогает (я все скипы пробовал ), а делать update_recordset индивидуально для каждой из сотен тысяч записей - идея интересная.

Я правильно понимаю, что skipDatabaseLog должен работать только для update_recordset, это функционал согласно дизайна Аксапты?
Насчет дизайна не знаю. Но работает. Т.е. в вашем случае надо использовать и update_recordset и skipDatabaseLog и skipDataMethods

Можно делать update_recordset индивидуально для каждой записи - ничего в этом такого нет. обычный update() отправляет схожий запрос. Ну или если у вас есть какой нить критерий по которому можно больше записей отобрать для обновления то его же можно запихнуть в условие update_recordset
Старый 08.04.2011, 21:06   #13  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
а если vendTable.skipDatabaseLog(true) вызвать после select, а не до? Вдруг select сбрасывет значения флагов skip*
Старый 09.04.2011, 00:29   #14  
Hyper is offline
Hyper
Участник
Соотечественники
 
163 / 29 (1) +++
Регистрация: 09.10.2003
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
а если vendTable.skipDatabaseLog(true) вызвать после select, а не до?
Пробовал - не получалось.
Старый 09.04.2011, 13:22   #15  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1293 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Насколько я помню, у нас в Ax3.0 была та же проблема. В принципе, она не особо мешала кроме случаев массовой загрузки. При массовой загрузки мы:
  • удалили запись в таблице настройки логирования.
  • загрузили данные.
  • восстановили настройку.
Причем, работал такой подход только в двухуровневой конфигурации. В трехуровневой без перезапуска AOS это не работало.
За это сообщение автора поблагодарили: Hyper (1).
Теги
database log

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
_ds.research(true) не работает AlexeyVS DAX: Программирование 8 27.05.2010 10:40
palleagermark: formdatasource.research(TRUE) Blog bot DAX Blogs 0 26.05.2009 01:10
palleagermark: Bug in EP 2009 when having the debug flag set to true Blog bot DAX Blogs 0 05.01.2009 11:06
COM Word и font.bold(true) vadimiron DAX: Программирование 5 31.07.2008 23:40
Не срабатывает метод clicked у WebCheckBox (а надо сделать чтобы в заисимости от значения WebCheckBoxa другой компонент был enabled или disabled) rkorchagin DAX: Программирование 8 11.07.2008 10:37

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

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

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