Как Microsoft Navision отслеживает пользователей / как проверить себя при входе в систему - PullRequest
1 голос
/ 04 декабря 2009

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

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

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

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

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

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

Есть идеи? Ура, Lance

1 Ответ

2 голосов
/ 09 декабря 2009

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

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

...