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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.04.2008, 11:31   #1  
kgksoft is offline
kgksoft
Участник
 
37 / 107 (4) +++++
Регистрация: 24.12.2003
? Ошибка обновления строк в трехзвенке
Проблема следующая. Глюк воспроизводится в Axapta 3.0 только в трехзвенке и только с базой MS SQK2K5.

Axapta 3.0 SP4 KR3
MSSQL2K5 (Microsoft SQL Server Enterprise Edition 9.0.3228)
AOS - Windows 2000 Advanced Server SP4 (MDAC 2.8 SP1)

Периодически в разных местах возникает стандартное сообщение о том, что запись была обновлена на другом комьютере, нажмите Восстановить и т.д. и т.п.

Чаще всего эта проблема наблюдается при редактировании таблиц на DataSource'ах которых перекрыт метод active и в нем выполняются тяжеловесные операции.

Был проведен эксперимент. Создал новую таблицу с несколькими полями.Никаких свойств больше не менял. Создал новую форму и положил на нее грид для редактирования этой таблицы. Далее перехватил на DataSource метод active и добавил некий "тормоз":

X++:
public int active()
{
    int ret;
    int a = timenow();

    ret = super();
    while (timenow()<=a){}

    return ret;
}
после этого запустил форму. добавил несколько строк и после непродолжительных (до 100 изменений ) манипуляций и изменений полей всплывает вышеописанный глюк. Естественно, в масштабах предприятия глюк возникает намного!!! чаще. Помогите

P.S.
Включать в базе режим совместимости с SQL2000 еще не пробовал, но не хотелось бы делать downgrade.
Старый 09.04.2008, 11:41   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от kgksoft Посмотреть сообщение
Чаще всего эта проблема наблюдается при редактировании таблиц на DataSource'ах которых перекрыт метод active и в нем выполняются тяжеловесные операции.
Ну, дык не делайте ваших "тяжеловесных операций".
Вынесите их на отдельную кнопку.

Про "глюк" - ищите в ваших "тяжеловесных операциях" метод update.
Ваша ошибка в том, что в момент ПРОСМОТРА вы делаете ОБНОВЛЕНИЕ. Перенесите обновление записи в метод write и "глюк" волшебным образом исчезнет.
__________________
полезное на axForum, github, vk, coub.
Старый 09.04.2008, 11:54   #3  
kgksoft is offline
kgksoft
Участник
 
37 / 107 (4) +++++
Регистрация: 24.12.2003
Цитата:
Сообщение от mazzy Посмотреть сообщение
Ну, дык не делайте ваших "тяжеловесных операций".
Вынесите их на отдельную кнопку.
Все бы хорошо, но иногда глючит и стандарные операции. Например редактирование номенклатурного справочника. Кроме того, это не решение проблемы. В вышеприведенном примере я не делал ничего запрещенного, а глюк вылез.
Старый 09.04.2008, 12:06   #4  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Цитата:
Сообщение от kgksoft Посмотреть сообщение
...
в масштабах предприятия глюк возникает намного!!! чаще
...
В масштабах предприятия вы от него и не избавитесь. Что у вас за справочник, что вы его постоянно обновляете? Да еще и так интенсивно. Он обновляется только из интерфейса, или из кода тоже?

Этот глюк постоянно вылазит, если на таблице включен Entire table cache. Я иногда на время интенсивной настройки системы снимаю кэширование со справочников даже. Он у меня воспроизводился на всех версиях 3.0 на MS SQL 2000.
__________________
С уважением,
glibs®
Старый 09.04.2008, 12:21   #5  
kgksoft is offline
kgksoft
Участник
 
37 / 107 (4) +++++
Регистрация: 24.12.2003
Цитата:
Сообщение от glibs Посмотреть сообщение
В масштабах предприятия вы от него и не избавитесь. Что у вас за справочник, что вы его постоянно обновляете? Да еще и так интенсивно. Он обновляется только из интерфейса, или из кода тоже?
Чаще всего ошибка возникает при редактировании строк журнала собственной разработки. На методе WRITE сидит довольно тяжелые операции вызова T-SQL, но я убирал абсолютно весь кустарный обновляющий код и глюк вылезал все равно, но намного реже. Т.е. обычное!!! редактирование строк в таблице с большим числом записей !!! (Глюк ядра ?)

Цитата:
Сообщение от glibs Посмотреть сообщение
Этот глюк постоянно вылазит, если на таблице включен Entire table cache.
Кэш для этих таблиц выключен.

Более того, возвращаясь к моему тестовому примеру:
1. Там кэша нет.
2. С таблицей работаю только я и в одном окне
при этом ошибка возникает.
Старый 12.03.2009, 17:52   #6  
kgksoft is offline
kgksoft
Участник
 
37 / 107 (4) +++++
Регистрация: 24.12.2003
:)
Только пофиксил баг. Ох и крови он попил. А проблема была в том, что при активном использовании прямых SQL-запросов в них для работоспособности нужно указывать директиву "set nocount on". Вот мы и указывали, а выключать "set nocount off" забывали (не знали).
Дальше лучше. Такие сессии SQL-сервера случайным образом выделяль AOS-ом ни в чем не повинным пользователям (АОС SQL-сессии не закрывает, а выдает при надобности) и выдавали сообщение о невозможности сохранить запись (оновлена другим пользователем) в самых безобидных случаях. На произвольных таблицах и формах.
Более того, проблемы возникали и в толстом клиенте, но намного реже. Реже использовался функционал "set nocount on".
За это сообщение автора поблагодарили: mazzy (2), oip (1).
Старый 10.09.2019, 09:56   #7  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,941 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от kgksoft Посмотреть сообщение
...Ох и крови он попил. А проблема была в том, что при активном использовании прямых SQL-запросов в них для работоспособности нужно указывать директиву "set nocount on". Вот мы и указывали, а выключать "set nocount off" забывали (не знали).
А как вы диагностировали проблему ? Это же найти надо было...
Просто догадались ?
Старый 10.09.2019, 11:16   #8  
kgksoft is offline
kgksoft
Участник
 
37 / 107 (4) +++++
Регистрация: 24.12.2003
Это давно было в Ax 3.0. Пользователи жаловались на странные сообщения про невозможность обновить строку, которую только этот пользователь и правил.

Диагностировал на системе без пользователей на форме на которой из необычного было только вызов хранимки MSSQL для заполнения вспомогательных строк в строках кастомного журнала.
Теги
ax3.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Ошибка при изменении/создании строк предложений по продажам JeS DAX: Программирование 8 10.07.2009 18:16
Странная ошибка при работе в трехзвенке. malex DAX: Администрирование 8 02.05.2008 03:33
Ошибка при передаче курсора для обновления с клиента на сервер vallys DAX: Программирование 4 03.07.2007 13:32
Ошибка при формировании строк Журнала платежей ATimTim DAX: Функционал 12 05.07.2004 18:01
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38

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

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

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