marsianer
Goto Top

Navisions-Client automatisch beenden

Hallo ,

ich habe folgendes Problem.
Ich möchte das der Navisions-Client sich automatisch beendet , wenn der User über einen bestimmten Zeitraum inaktiv ist.

Lösungen zur kompletten Abmeldung hab ich gefunden im rk von Win2003Server. Leider ist das nicht Sinn der Sache, es geht nur um den NAV-Client.
Ich möchte aber auch nicht ständig nachschauen und mir vielleicht noch die Speicherwerte aufschreiben müssen um zu vergleichen ob denn da sich was geändert hat.

Ein kostenpflichtiges Programm hab ich ja im Internet entdeckt, will ich aber nicht. Ich würde auch VB6 mit zur Hilfe nehmen, habe aber keinen direkten Lösungsansatz wie ich das realisieren könnte. Die Tasklist ist ne gute Sache, da kann man ja die PID auslesen. Aber die Speicherwerte müsste ich ja mit eine Art Timer immer wieder auslesen und speichern, vergleichen und dann eben den Prozess beenden.

Der Grund dafür ist der, das manche User sich einfach nicht abmelden vom Navision, und dann irgendwann mal die Lizenzen am Ende sind, andere sich einloggen wollen und nichts geht - d. h. mein Tele klingelt und ich darf das Problem lösen. Auf Dauer geht das einfach nicht.

Für Hilfe bzw. einen kleinen Denkanstoss wäre ich sehr dankbar.

Gruß

Content-ID: 135968

Url: https://administrator.de/contentid/135968

Ausgedruckt am: 25.11.2024 um 21:11 Uhr

onkel-ossi
onkel-ossi 15.02.2010 um 15:28:19 Uhr
Goto Top
Hallo Marsianer,

welche Navisionversion setzt ihr denn ein und unter welcher Datenbank?

Gruß
Thomas
Marsianer
Marsianer 15.02.2010 um 15:37:17 Uhr
Goto Top
Wir haben die Clientsoftware 5.0SP1 auf nem Terminalserver. SQL-DB liegt auf einem App-server.

Am Ende ist es ja denke ich egal ob es Navision oder MS Paint ist, wichtig ist nur das der Prozess eben beendet wird. Und da auf dem Terminalserver natürlich die " finsql.exe" mehrmals läuft , muss ich andre Faktoren vergleichen und das wäre natürlich am besten die Speichernutzung denke ich.
Vielleicht denke ich auch falsch, hab schon gegoogelt, da finde ich nur das kostenpflichtige " ExpandIT Client Control" - Tool .

Danke nochmal im Voraus,

Gruß
Mario
onkel-ossi
onkel-ossi 15.02.2010 um 15:57:01 Uhr
Goto Top
Hallo Mario,

wir setzen Navision ebenfalls in der 5.0 ein und haben das ganze auf einem Terminalserver am laufen.

Wir hatten unter navision 4.0 und der Native-DB ebenfalls ExpandIT im Einsatz, jetzt setzen wir jedoch auch ein automatisches trennen der RDP-Verbindung nach 15 Minuten Untätigkeit.

Es hat kein User Probleme damit, denn alle anderen Anwendungen laufen auf dem Fat-Client.

Gruß
Thomas
Marsianer
Marsianer 15.02.2010 um 16:18:35 Uhr
Goto Top
Ich hab mich wohl bissel undeutlich geäußert.
Also ich hab hier so viele User, das es schon passieren kann, das die Zugriffslizenzen für das NAV erschöpft sind.
Ich bin aber der Meinung, ehe ich neue Lizenzen kaufe, schaue ich erstmal den Usern auf die Finger ob diese, wenn die im NAV eingeloggt sind, auch damit arbeiten, oder ob die Mittagspause machen, wie auch immer. So, und bloß weil die vergessen sich auszuloggen, muss ich nicht neue Lizenzen kaufen.
Ich kann die Verbindung auch nicht einfach so trennen, manchmal haben die noch Dokumente offen und nicht ordentlich gespeichert. Da kann man die belehren wie man will.
Nach einem gewissen Zeitraum werden die auch getrennt, aber der NAV - Client laüft ja weiterhin, bis die sich richtig abmelden oder eben den Client beenden.

Ich würde ja auch selbst was programmieren in VB , aber ich weiß nicht genau wie man die Tasklist ausliest, bzw. diese anspricht.
wiesi200
wiesi200 15.02.2010 um 19:14:19 Uhr
Goto Top
Nicht zwangweise.

Ich könnte mir jetzt mal nur theoretisch vorstellen.

Navision kann ja die Datenbanksessions anzeigen. Da hier auch andere zugriffe angezeigt werden gehe ich davon aus das alles in einer Systemtabelle steht. Hier steht auch die Leerlaufzeit drinnen.
Jetzt könntest du mit einem seperaten Programm eben diese Tabelle auslesen nach der BenutzerID und dem Hostnamen suchen und wenn die Leerlaufzeit eine bestimmte Zeit überschreitet den Task killen.

Währ aber nur was für eine SQL Datenbank mit Windowslogin. Und alles rein Theoretisch.
onkel-ossi
onkel-ossi 15.02.2010 um 21:50:44 Uhr
Goto Top
Hallo,

ich habe gerade einmal nachgesehen. Es gibt eine Sicht (dbo.Session) die unter anderen die Idle Zeit beinhaltet. Aufgrund dieser Tabelle sollte ein Logoff gut zu steuern sein.
Sollte das ganze ein einfaches Skript ergeben wäre ich interessiert, dan könnten wir einige Fat-Clients mehr installieren.

Gruß
Thomas
Marsianer
Marsianer 16.02.2010 um 08:24:54 Uhr
Goto Top
Guten Morgen,

schön das ihr euch mal den Kopf zerbrochen habt. Danke.
Also ich werd mich mal mit euren Tipps beschäftigen im laufe des Tages und diese auch mal versuchen umzusetzen.
Da stehen noch andre Aufgaben an im Augenblick. Ich meld mich wenn ich irgendwas hinbekommen habe, was nicht heißen soll, das ich für weitere Denkanstösse nicht offen wäre.
Bis dahin ....

Gruß
Mario
patjung
patjung 16.02.2010 um 10:04:24 Uhr
Goto Top
Hallo,

hier ein kleine c/side skript, mit dem wir das problem lösen. Das ding läuft alle 10 minuten im objektaufrufplaner:
LastFieldNo := FIELDNO("Connection ID");
SETFILTER("Idle Time", '>%1', 300000);

Filtertext:=GETFILTERS;

Session - OnAfterGetRecord()

IF Session."Login Type"=Session."Login Type"::Datenbank THEN
BEGIN
user.GET(Session."User ID");
sessions2.SETRANGE("User ID",Session."User ID");
IF (sessions2.COUNT>1) AND (sessions2."Login Type" <> sessions2."Login Type"::Windows) AND (user."Anzahl Anmeldungen"<>99) THEN
Session.DELETE;
sessions2.SETRANGE("User ID");
END


Gruß
Marsianer
Marsianer 19.02.2010 um 08:22:32 Uhr
Goto Top
Hallo,

erstmal danke für die Zuschriften.

Patjung , also ich hab bisher noch kein c/side skript geschrieben. Hatte bis jetzt auch noch keine Zeit mich damit zu beschäftigen, an welcher Stelle ich denn dieses Script einfügen muss.
Bisher hab ich einfach geschaut unter Datenbank/Informationen, wie lange die Sessions laufen usw. .
Danke. Ich werd das Script auf jedenfall benutzen, testen, muss mich bloß noch bissel belesen.

Gruß
Mario
Marsianer
Marsianer 19.02.2010 um 08:26:55 Uhr
Goto Top
Hallo Thomas,

also die Sicht hatte ich gefunden, ist auch ein guter Ansatz, die Info's per SQL abzufragen.
Im Augenblick hab ich zwar da keinen freien Kopf für diese Abfragen, aber ich meine sogar das das Script , weiter unten, von patjung , die einfachste Lösung ist. Bis ich das umgesetzt habe, werd ich wohl weiterhin die Sessioninfos unter dem Punkt Datenbank im NAV als Infoquelle nehmen.

Danke für deine Anregung,

Gruss Mario
NAV-sparer
NAV-sparer 28.03.2010 um 17:13:46 Uhr
Goto Top
Hallo Marsianer,

bist Du da schon weitergekommen?
Ich bin NAV-Neuling, brauche die Funktionalität aber auch.

Kann mir bitte jemand NOCH KONKRETER helfen als es patjung schon gemacht hat?

Danke!

Gruß
Sparschwein
NAV-sparer
NAV-sparer 28.03.2010 um 17:14:24 Uhr
Goto Top
wohin muss ich das reinkopieren?

bin ein arger Neuling...
wiesi200
wiesi200 28.03.2010 um 17:44:51 Uhr
Goto Top
So leicht ist es jetzt auch nicht. Das ganze muss in einen Report oder Codeunit schrieben werden. Dazu noch 1-2 Variablen definiert.
Dann braucht ihr noch einen laufenden NAS Server und dann kann man den Report über die Objekt Warteschlange laufen lassen.

Hab ihr schon eine Schulung ala Reportdesign gehabt?