Как Microsoft Navision отслеживает пользователей/как самостоятельно проверять при входе в систему

У нас есть сервер Navision с 3 лицензиями. Одна лицензия ВСЕГДА должна быть выделена для использования веб-сайтом электронной коммерции. Два других предназначены для использования администраторами.

К сожалению, время от времени мы получаем эту ужасную ошибку на веб-сайте:

System.Web.HttpUnhandledException: возникло исключение типа «System.Web.HttpUnhandledException». ---> System.Web.Services.Protocols.SoapException: Лицензия вашей программы не позволяет работать большему количеству пользователей одновременно. Подождите, пока другой пользователь не прекратит использование программы. Обратитесь к системному администратору, если вы хотите разрешить большему количеству одновременных пользователей в вашей системе.

Обычно это происходит, когда слишком много пользователей пытаются использовать клиенты Navision... и это убивает веб-сайт для certian funcitons, пока мы не сможем войти, sp_who, чтобы увидеть, кто перехватывает сеансы, и попросить их выйти из системы или полностью закрыть сеансы. .

Мы написали код для подключения к учетной записи Navision, чтобы проверить SQL-сервер sp_who, чтобы убедиться, что не слишком много пользователей вошли в систему и используют базу данных Navision, но, похоже, это не работает.

Я думаю, что Navision хранит текущий статус входа в систему где-то еще, и именно там мы должны искать, а не в системных таблицах SQL-сервера.

Есть идеи? Привет, Лэнс


person Lanceomagnifico    schedule 04.12.2009    source источник
comment
Было бы полезно указать, какую версию Navision вы используете, поскольку лицензионные требования различаются.   -  person Tim Ebenezer    schedule 04.12.2009
comment
Тим — Nav 6 — первая версия, в которой были веб-сервисы.   -  person Lanceomagnifico    schedule 10.12.2009


Ответы (1)


Если вы используете веб-сервисы, то у вас NAV 2009 или 2009 SP1. Веб-сервисы не потребляют лицензионные сеансы (вы можете подключать неограниченное количество сеансов веб-сервиса). Однако если у вас есть три лицензии и вы подключаете три или более клиентов (любая смесь RTC и C/SIDE), подключение к веб-службе завершится с ошибкой, которую вы описали.

Подсчет сеансов должен отражать то, что вы видите в master.dbo.sysprocesses (вам нужно будет выполнить несколько объединений, чтобы увидеть, кто подключен к какой базе данных). sysprocesses, вероятно, также является основой для вызова sp_who. Вы можете убедиться в этом сами, открыв C/SIDE, затем выберите файл->база данных->информация, затем сеансы. Сравните это с sp_who или sysprocesses.

person Alex Peck    schedule 09.12.2009
comment
Спасибо, Алекс, это немного проясняет ситуацию. Я смотрел на sp_who, но думал, что это не может быть так просто, что Nav будет иметь свой собственный внутренний метод отслеживания входов в систему. - person Lanceomagnifico; 10.12.2009