Да. Он просто падает по этому условию, что Вы привели:
X++:
select @max_val = max(SESSIONID)+1 from SYSCLIENTSESSIONS WITH (UPDLOCK)
if (@max_val > 65535)
select @sessionid = -3
(тк максимальное значение в таблице уже 65535, то он и падает).
Может, я не совсем понимаюю, что Вы хотели сказать, Владимир?
Я не понимаю, почему он не выбирает неактивные сессиии с меньшими номерами . Подозреваю, что это из-за передаваемого параметра @maxClientId
X++:
select @first = min(sessionID)
from SysClientSessions with(UpdLock, readpast)
where sessionId>@maxClientId
and SessionId <>@masterId