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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.07.2025, 15:35   #1  
Lankey is offline
Lankey
Участник
 
151 / 30 (2) +++
Регистрация: 19.05.2020
createUserSessions - как работает?
AX2009 . В хранимой процедуре createUserSessions на стороне sql есть параметр @maxClientId
Кто-нибудь знает, откуда он берет значение(что означает)?
Проблема в том, что номера неактивных сессий (Status=0) в таблице SysClientSessions должны , судя по алготитму, отдаваться новым сессиям
Вот этот момент выбора:
X++:
select @first = min(sessionID)
from SysClientSessions with(UpdLock, readpast) 
where sessionId>@maxClientId
and SessionId <>@masterId
, но почему-то вместо этого создаются новые, и из-за этого растет таблица SysClientSessions .... Думаю, что дело в @maxClientId

Спасибо

Последний раз редактировалось Lankey; 04.07.2025 в 15:37.
Старый 05.07.2025, 08:17   #2  
Pandasama is offline
Pandasama
Участник
 
465 / 140 (5) +++++
Регистрация: 11.08.2014
Адрес: Барнаул
Сам не в курсе, но беглый гуглинг нашёл обсуждение этого параметра здесь
https://community.dynamics.com/forum...9-a2de0b0dfa90
Который дает ссылку сюда:
https://learn.microsoft.com/en-us/pr...ation-commands
Где есть параметр MaxConcurrentSessions

Возможно, это как-нибудь поможет
Старый 08.07.2025, 12:24   #3  
Lankey is offline
Lankey
Участник
 
151 / 30 (2) +++
Регистрация: 19.05.2020
Спасибо. Да, я видела ссылку на это обсуждение, но там нет ответа на вопрос. И у нас такая же проблема как там. ClientType=5 не переиспользует номера неактивных сессий, а создает новые
Старый 08.07.2025, 20:30   #4  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,975 / 3268 (116) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
А какую это создает проблему ?
Больше чем 65 тысяч записей не будет.

Какую проблемы вы решаете ?
Старый 11.07.2025, 17:55   #5  
Lankey is offline
Lankey
Участник
 
151 / 30 (2) +++
Регистрация: 19.05.2020
Постоянно падали все аосы. То один то другой. По рандому. Обнаружилось, что в этой таблице последняя активная запись с номером 65535 (в момент падения, естественно, становилась неактивной). В таблице записей было намного меньше (пару тысяч), чем 65535. Активных записей из них обычно около 100--200. Судя, по алгоритму, он падал как раз , тк больше 65535 присвоить не мог, но почему-то это сдедать пытался, вместо того, чтобы использовать неактиыне записи с SessionID ниже этой.

Перестарт АОС-ов дело не лечил. После какого-то времени все равно начинали рандомно падать АОСы
Вылечилось основкой всех АОСов и удалением записей из таблицы. Но не ясно, как так получилось, что максимум был достигнут и приводил к таким последствиям?

Последний раз редактировалось Lankey; 11.07.2025 в 18:05.
Старый 14.07.2025, 12:09   #6  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,714 / 1201 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Штатное поведение - это как раз создание новых записей, а не использование "свободных". Если сессию перестали использовать, то она должны быть закрыта (удалена запись) и никак иначе

Там же дальше в хранимке [dbo].[CREATEUSERSESSIONS] возвращает код ошибки

X++:
select @first = min(SESSIONID) 
from SYSCLIENTSESSIONS WITH (UPDLOCK,READPAST) 
where STATUS = 0 
	and SESSIONID > @maxClientId 
	and SESSIONID <> @masterId 
	
if (select count(*) from SYSCLIENTSESSIONS where SESSIONID IN (@first)) > 0 
begin 
    (...)
     update (...)
     (...)
     select @sessionid = @first
end
else
begin 
	(...)
		select @max_val = max(SESSIONID)+1 
		from SYSCLIENTSESSIONS WITH (UPDLOCK) 
				
	if (@max_val > 65535) 
		select @sessionid = -3 
	else 
	(...)
end

Т.е. может быть только одна запись с номером сессии 65535. Номер больше создать не даст. Будет ждать, пока не уменьшат количество сессий (я смотрел в dax2012, возможно, в dax2009 этого условия нет)

В хранимке [dbo].[CREATEUSERSESSIONS] использование этих сессий - это исключение. Попытка как-то исправить проблему, передав сессию пользователю в надежде, что по завершении работы эта сессия будет корректно закрыта


Не вполне ответ на Ваш вопрос, но

Закрыть AxaptaCOMConnector из AXAPTA

В принципе, вывод тот же, что и в обсуждении https://community.dynamics.com/forum...9-a2de0b0dfa90

65535 - это предел. Максимум. Количество соединений должно быть меньше этого числа. Если соединения с номером больше этого числа вообще появились, то это ошибка. Их вообще надо отключать и сбрасывать и искать, почему такая ситуация возникла. Например, в обсуждении - это было подключение из-вне к Axapta. Ну и у меня по ссылке - тоже
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Теги
ax2009

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
select crossCompany и Views - работает только для админов? DTD DAX: Программирование 11 26.03.2014 09:08
Всегда ли правильно работает queryrun().query().dataSourceCount() при присоединении пользователем таблиц в настройках стандартного запроса? Aquarius DAX: Программирование 5 26.09.2013 09:52
AX 2012 Enterprise Portal: Не работает Add indicators в Business Overview Web Part Maxim Gorbunov DAX: Администрирование 1 07.07.2012 14:49
Не работает поиск в лукапе на ГТД Bega DAX: Функционал 0 08.12.2011 09:09
почему на работает common.(fieldId)[idx] maze DAX: Программирование 3 31.08.2007 06:48

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

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

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