Показать сообщение отдельно
Старый 16.07.2025, 02:50   #14  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,715 / 1204 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Запустил SQL Profiler. Посмотрел, какое значение передано. У меня получилось следующее

До запуска Axapta в таблице SysClientSessions записи начинаются со значения SessionId = 3, первая запись со значением Ststus = 0 имеет SessionId = 6

При запуске Axapta фиксируется 2 вызова ХП (Имя компьютера и SID заменил текстом)

Вызов 1

@licenseType = 1
@masterId = 0
@maxClientId = 2

Код:
declare @p17 int
set @p17=6
declare @p18 datetime2(0)
set @p18='2025-07-15 22:21:38'
exec CREATEUSERSESSIONS 
	0,
	0,
	1,
	6,
	N'vmaksimo',
	N'RU',
	N'en-us',
	N'ComputerName',
	N'SID',
	5645806642,
	3,
	41750,
	1,
	0,
	2,
	N'initial',
	@p17 output,
	@p18 output
select @p17, @p18
Вызов 2

@licenseType = 0
@masterId = 6
@maxClientId = 6

Код:
declare @p17 int
set @p17=10
declare @p18 datetime2(0)
set @p18='2025-07-15 22:21:46'
exec CREATEUSERSESSIONS 
	3,
	1,
	1,
	6,
	N'vmaksimo',
	N'RU',
	N'en-us',
	N'ComputerName',
	N'SID',
	5645806643,
	3,
	30000,
	0,
	6,
	6,
	N'initial',
	@p17 output,
	@p18 output
select @p17, @p18
В итоге, в таблице SysClientSessions повторно используется запись с SessionId = 6. Т.е. отработал первый вызов ХП для @maxClientId = 2

Второй вызов ХП для @maxClientId = 6 тоже отработал, но потом это соединение было разорвано и у соответствующей записи возвращен Status = 0

Хм... Т.е. я был не прав. Это все-таки механизм повторного использования записи. Вопрос только в том, как значение этого параметра определяется.

Вероятно, для @licenseType = 1 просто как min()-1 по всей таблице. Для @licenseType = 0 уже как-то сложнее

Да, если запустить второй экземпляр Axapta не закрывая первый, то вызов будет с тем же параметром @maxClientId = 2
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...

Последний раз редактировалось Владимир Максимов; 16.07.2025 в 03:04.