Запустил 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