Wie werden Locks von abgestürzten AG-VIP-SQL Sessions behandelt?

Martin Richter
18.08.2011 16:14
Beschreibung:

Wenn AG-VIP SQL durch einen Rechner Absturz unvorhergesehen beendet wird, kann es vorkommen, dass beim erneuten Anmleden die folgende Fehlermeldung erscheint:

Das Benutzerkonto "xyz" ist gesperrt!
Dieses Objekt ist durch den Benutzer "xyz" an der Arbeitsstation "abc" gesperrt seit "12.07.2007 14:35"!

Hintergrund:

Datenbanksperren werden in zwei Tabellen der SQL Datenbank gehalten. Es ist klar, dass Einträge in diesen Tabellen erhalten bleiben, wenn AG-VIP SQL oder eine Komponente abstürzt, oder eine Komponente durch einen Rechnerabsturz oder Netzwerkdefekt nicht beendet werden konnte.

Jede aktive Session setzt alle 5 Minuten ein bestimmtes Feld im aktuellen Sessioneintrag. Gleichzeitig wird von jeder aktiven Session alle 5 Minuten geprüft ob es Sessions gibt die länger als 10 Minuten keine Aktualisierung durchgeführt haben.
Sessions die keine Aktualisierung für mehr als 10 Minuten durchgeführt haben gelten als tot und werden automatisch mit allen gehaltenen Locks entfernt.
Dieser Test startet beim Aufruf einer neuen AG-VIP SQL Instanz und erfolgt dann alle 5 Minuten.

Gleichzeitig gibt es eine automatische Aktualisierung für den aktuellen PC.
Beim Start einer Instanz von AG-VIP SQL wird die aktuelle Session in der Registry des Rechners vermerkt. Stürzt der Rechner ab, oder AG-VIP SQL und wird AG-VIP SQL sofort neu gestartet, dann wird in der Registry der entsprechende Wert der letzten Session gefunden und diese Session automatisch entfernt.
Ansonsten bliebe diese Session für 10 Minuten gesperrt.

Das hat aber folgenden Seiteneffekt: Stürzt eine AG-VIP SQL Session ab für Benutzer X. Aber der Benutzer wechselt nun den PC und will sich an einem neuen Rechner anmelden, so ist seine Session weiterhin gesperrt (für 10 Minuten). An dem Rechner an dem er gearbeitet hatte und die letzte Session nicht ordnungsgemäß abgeschlossen wurde, hätte er sich sofort neu anmelden können.

Auch für AGVIPDBUpdate gilt die gleiche Regel.
Manche Administratoren können oder wollen nicht warten bis alle Nutzer AG-VIP SQL beendet haben und Terminieren diese laufenden Sitzungen. Die Folge es bleiben offene Sessions. AGVIPDBUpdate kann nun nicht gestartet werden, weil diese Session AGVIPDBUpdate anzeigen, dass es noch aktive Nutzer gibt.

Das Problem löst sich auch in diesem Fall nach ca. 10-15 Minuten.

Tags: Absturz, Benutzer, Crash, Session
Durchschnittliche Bewertung: 0 (0 Abstimmungen)

Kommentieren nicht möglich