2009-12-04 45 views
1

我们有一个拥有3个许可证的Navision服务器。应始终分配一个许可以供电子商务网站使用。另外两个是供管理员使用的。微软Navision如何跟踪用户/如何在登录时自己检查

Unfortuneately,不时地我们拿到的网站上这种可怕的错误:

System.Web.HttpUnhandledException:类型System.Web.HttpUnhandledException“的异常被抛出。 ---> System.Web.Services.Protocols.SoapException:您的程序许可证不允许更多的用户同时工作。等到另一个用户停止使用该程序。如果您希望在系统上允许更多的同时用户,请联系您的系统管理员。

这种情况通常发生在有太多用户试图使用Navision客户端时......并且这会杀死网站以查找certist功能,直到我们能够进入,sp_who查看谁在占用会话并要求他们注销或直接杀掉会话。

我们已经编写了钩入Navision登录的代码来检查SQL服务器sp_who,以确保没有太多的用户登录并使用Navision数据库,但这似乎不起作用。

我在想,Navision将当前登录状态存储在别的地方,这就是我们应该看的地方,而不是在SQL服务器系统表中。

任何想法? 干杯, 兰斯

+0

由于许可要求不同,指出您使用的是哪个版本的Navision会很有用。 – 2009-12-04 15:58:06

+0

Tim - Nav 6 - 具有Web服务的第一个版本。 – Lanceomagnifico 2009-12-10 12:58:57

回答

2

如果您使用的是Web服务,那么您有NAV 2009或2009 SP1。 Web服务不消耗许可的会话(您可以连接无限的Web服务会话)。但是,如果您有三个许可证并连接三个或更多客户端(任何RTC和C/SIDE的混合),则Web服务连接将失败并显示您描述的错误。

会话计数应反映您可以在master.dbo.sysprocesses中看到的内容(您需要进行一些连接以查看谁连接到了哪个数据库)。 sysprocesses可能也是调用sp _谁的基础。你可以通过打开C/SIDE来验证它,然后选择file-> database-> information然后会话。将此与sp _谁或sysprocesses进行比较。

+0

谢谢亚历克斯 - 这让事情变得有点过分了。我一直在看sp_who,但认为这不可能那么简单,Nav会有自己的内部方法来跟踪登录。 – Lanceomagnifico 2009-12-10 12:58:11