18. September 2008 14:49
Hallo zusammen,
gibt es irgendeine Möglichkeit, User aus der Datenbank zu werfen,
wenn z.B. eine Stunde lang keine Benutzereingabe mehr registriert wird?
Am Besten wäre eine Lösung seitens NAV, da eine Trennung über den SQL Server
in Bezug auf Transaktionen ja gefährlich werden könnte
Zuletzt geändert von Gollum83 am 18. September 2008 15:50, insgesamt 1-mal geändert.
18. September 2008 15:00
Auf mibuso.com gibt es zahlreiche Beiträge zu diesem Thema, jedoch glaube ich, dass sie alle ein externes Tool benötigen.
Prinzipiell müsste es aber auch von NAV selbst möglich sein, die Sessions zu überwachen:
Eine festgelegte Session, welche sowieso durchgehend läuft (z. B. eine Session für Objektaufrufplaner oder ein NAS, ...) lässt gleichzeitig eine Codeunit mitlaufen, welche (mittels Navision-Timer) in regelmäßigen Abständen die Leerlaufzeit der anderen User prüft.
Überschreitet ein User diese Leerlaufzeit, so löscht diese "Überwachungs-Session" einfach den Eintrag aus der Session-Tabelle (am Besten mit Session.DELETE(TRUE);).
Dies habe ich noch nie ausprobiert, es müsste aber so ungefähr funktionieren.
Wichtig: Es darf nur in einer einzigen Session diese "Überwachungs-Codeunit" gestartet sein, da es sonst keine inaktiven Sessions mehr gäbe.
(Logisch, denn dann wären ja alle Sessions ständig aktiv, weil sie permanent inaktive Sessions suchen.)
18. September 2008 15:49
Hallo Timo
Vielen Dank für die Hinweise.
Ich habe auf mibuso folgendes gefunden:
- Code:
OBJECT Codeunit 50025 NAS session monitor
{
OBJECT-PROPERTIES
{
Date=10/21/07;
Time=[ 8:15:10 PM];
Modified=Yes;
Version List=Mibuso,ara3n;
}
PROPERTIES
{
SingleInstance=Yes;
OnRun=BEGIN
IF ISCLEAR(Timer) THEN
CREATE(Timer);
Timer.StartTimer(6000);
END;
}
CODE
{
VAR
Timer@1004 : Automation "{DDADD7CC-AD56-4CA6-9C85-22AE76BF21A1} 3.0:{E7414D60-2D83-44C7-826A-FD14557299F0}:'CP Timer'.cTimer" WITHEVENTS;
Session@1000000000 : Record 2000000009;
EVENT Timer@1004::TimerEvent@1();
BEGIN
Session.SETRANGE("My Session",FALSE);
Session.SETFILTER("Idle Time",'>15 min');
IF Session.FINDSET THEN REPEAT
Session.DELETE;
COMMIT;
UNTIL Session.NEXT = 0;
END;
BEGIN
END.
}
}
Hab zum Test die CU im Client laufen lassen, und Session.SETFILTER("Idle Time",'>2 min'); festgesetzt.
Mein zweiter Testuser wurde nach 2 Minuten nichts tun tatsächlich rausgeschmissen.
Also sollte das ganze über den NAS wunderbar funktionieren.
Das mit den externen Tools habe ich nicht geprüft. Ich muss ganz ehrlich sagen,
diese Lösung scheint echt gut zu sein.
Vielen Dank
18. September 2008 16:02
Gollum83 hat geschrieben:Das mit den externen Tools habe ich nicht geprüft. Ich muss ganz ehrlich sagen,
diese Lösung scheint echt gut zu sein.
Ich bevorzuge immer die "interne Lösung" und greife nur auf externe Tools zurück, wenn es definitiv nicht mit NAV-Boardmitteln abbildbar ist.
Bei einfachen DLLs/OCX bediene ich mich der
[Navision24.de] Automatische Dateiregistrierung
Dieses kleine Tool hilft bei der automatischen Verteilung solcher Dateien.
18. September 2008 16:40
Da bin ich komplett der gleichen Meinung. Man schafft sich sonst nur unnötig Probleme.
Danke für den Link mit dem File Registration Tool
18. September 2008 18:12
Gollum83 hat geschrieben:Danke für den Link mit dem File Registration Tool
Den Dank reiche ich dann mal an
Marc Teuber weiter, denn er hat das Tool geschrieben.
(Wobei ich die Tabellen bei mir mandantenübergreifend definiert habe, da die Dateien nur einmal pro Arbeitsplatz (und nicht noch zusätzlich pro Mandant) registriert werden brauchen.)
19. September 2008 08:09
ok. einverstanden...
14. Januar 2009 15:07
Hi,
ich hatte selbige Anforderung, die inaktiven Sessions zu löschen. Habe dafür eine analoge Funktion geschrieben. Diese funktioniert auch sauber über den NAS, aber nur, wenn der NAS auf eine NATIVE-Datenbank geht.
Bei der NASSQL.EXE habe ich das Problem, dass die Session-Tabelle immer nur 1 Datensatz beinhaltet (nämlich die eigene Session).
Ich vermute, dies ist ein Bug in der NASSQL.EXE, da es mit der NAS.EXE funktioniert.
Ich verwende übrigens NAV 5.0 SP1 und SQL-Server 2005 bzw. 2008
Hat irgendjemand eine Idee, vielleicht ob es diesebezüglich bereits ein Hotfix seitens MS gibt?
14. Januar 2009 15:13
masch hat geschrieben:Bei der NASSQL.EXE habe ich das Problem, dass die Session-Tabelle immer nur 1 Datensatz beinhaltet (nämlich die eigene Session).
Hat der NAS User (also der Service Account) entsprechende Datenbank bzw. Systemrechte auf dem SQL Server bzw. der Datenbank? Ein kurzer Versuch mit db_owner oder sysadmin dürfte klären, ob es sich um fehlende Berechtigungen handelt.
14. Januar 2009 15:40
genau das war's. Vielen Dank für den Tipp.
Ich hatte bei meinem Datenbank-Login zwar sysadmin-Rechte, nicht aber mit meinem Window-Login.
Es ist schon echt was Wert, dass es so ein super Forum mit echt kompetenten Leuten gibt. Vielen Dank dafür
14. Januar 2009 16:42
Hi,
du könnest auch auf dem sql server dem benutzer die Permission "View server permissions” erteilen.
damit gehts auch
15. Juli 2009 13:00
Hallo zusammen,
ich stand jetzt auch vor der Aufgabe die inaktiven Sessions zu entfernen. Dabei ist mir aufgefallen, das Nutzer die mit Windowsauthentifizierung
angemeldet sind zwar aus der Tabelle Sessions entfernt werden. Sie erhalten aber keine Meldung das die Verbindung zum Server nicht mehr
existiert und können problemlos mit Navision weiterarbeiten. Scheinbar gibt es eine Reconnect sobald der Benutzer wieder im Navision arbeitet, sodaß die Session immer wieder neu in die
Sessiontabelle eingetragen wird. Jetzt weiß ich allerdings nicht was passiert wenn die Session aus der Tabelle entfernt wird, der Nutzer noch nicht wieder mit Navision
arbeitet und ein weiterer Nutzer sich anmelden will. Gibt es da irgendwelche Inkonsistenzen? Kann mir dazu jemand eine Auskunft geben?
Es ist eine 5.0 SP1 DB auf einem SQL-Server.
Viele Grüße
Frank
10. September 2009 10:43
Hallo,
ich bekommen folgende Fehlermeldung wenn ich Sessions über den NAS entfernen möchten(analog zu Codeunit 50025 NAS session monitor )
siehe Screenshot.
ist die Fehlermeldung jemandem bekannt?
Danke
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
22. Januar 2014 19:17
fragglet hat geschrieben:ich stand jetzt auch vor der Aufgabe die inaktiven Sessions zu entfernen. Dabei ist mir aufgefallen, das Nutzer die mit Windowsauthentifizierung
angemeldet sind zwar aus der Tabelle Sessions entfernt werden. Sie erhalten aber keine Meldung das die Verbindung zum Server nicht mehr
existiert und können problemlos mit Navision weiterarbeiten. Scheinbar gibt es eine Reconnect sobald der Benutzer wieder im Navision arbeitet, sodaß die Session immer wieder neu in die
Sessiontabelle eingetragen wird. Jetzt weiß ich allerdings nicht was passiert wenn die Session aus der Tabelle entfernt wird, der Nutzer noch nicht wieder mit Navision
arbeitet und ein weiterer Nutzer sich anmelden will. Gibt es da irgendwelche Inkonsistenzen? Kann mir dazu jemand eine Auskunft geben?
Es ist eine 5.0 SP1 DB auf einem SQL-Server.
Konnte diese Problem behoben werden? Bei mir geht es um NAV2009R2 mit SQL-Server.
Gruß t000bi
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.