Hallo!
Folgende Frage habe ich:
Ich greife in Delphi 7 mit den AdoComponenten auf den
MSSQL-Server zu. Das Programm soll im Terminal-Server laufen.
Ich benötige für mein Programm eine Mehrbenutzersperre, d.h. solange das Formular für das Unterprogramm geöffnet ist, soll kein anderer mit diesem Programm auf der Datenbank arbeiten, mit anderen Programmen und Unterprogrammen ggf. unter dem selben Benutzernamen schon.
Ich dachte ich schreibe in eine Tabelle einen Wert, der bei 0 beginnt, beim OnCreate-Event des Formulars um 1 hochgezählt und bei OnClose um 1 erniedrigt wird. Jedesmal wenn nach dem Öffnen der Wert ungleich 1 ist, würde ich die Sperre im Programm aktivieren.
Nun kann es aber passieren, daß das Programm abgeschossen wird oder der Rechner abstürzt. Dann würde die OnClose-Routine nicht ausgeführt werden und die Sperre wäre dauerhaft aktiviert, weil ein falscher Wert in der Tabelle stehen würde. Dafür müßte ich einen Button einrichten, mit dem man die Mehrbenutzersperre zurücksetzen kann. Das möchte ich aber verhindern. Daher habe ich zwei Fragen:
1) Gibt es sowas wie eine eindeutige Connection-ID bei TAdoConnection, die ich abfragen kann, die dann verschwindet, wenn keine Verbindung mehr besteht? Oder gibt es einen flüchtigen Speicher innerhalb einer Instanz des Programms, den ich im Terminal-Server aus einer anderen Instanz abfragen kann?
2) Wie kann ich mir die offenen Verbindungen zur Datenbank auflisten lassen?
Mich würden sehr Eure Meinungen interessieren. Wie würdet Ihr das umsetzen. Ist der Weg richtig oder macht man das anders?