Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Terminalserver, Datenbank, Computernahme ... Unterschiede? (https://www.delphipraxis.net/212121-terminalserver-datenbank-computernahme-unterschiede.html)

haentschman 21. Dez 2022 12:56


Terminalserver, Datenbank, Computernahme ... Unterschiede?
 
Liste der Anhänge anzeigen (Anzahl: 3)
Hallöle...8-)

Seit Neuestem haben wir für die Niederlassungen Terminalserver am Start.

Gegeben:
* 4 Datenbanken mit Replikation
* unsere Software meldet sich bei der "Masterdatenbank" als gestartet an und meldet sich bei Beendingung wieder ab. Die "Online" Instanzen werden nicht repliziert.

Soweit so gut. Funktioniert bestens im lokalen Netz. In der Regel hat jeder User eine Instanz geöffnet. Manche Maschinen haben mehrere angemeldete User.

Problem:
Die Instanz auf dem Terminalserver meldet sich an aber nicht wieder ab...:gruebel:

PS: Ich habe kontrolliert, daß nur eine Instanz, oder gar keine, offen ist. :?

Bild:
1. Terminalserver
2. Version
3. Startzeit (innerhalb von 2 Minuten 2x :shock:)

SQL:
Zitat:

insert into _Online (Workstation,Username,Version,OnlineTimeStamp) values (:WOS,:USN,:VER, GetDate())
delete from _Online where Workstation = :WOS and UserName = :USN
Wo ist der Unterschied? :gruebel:

PS: Persönlich tippe ich auf: .GetWindowsComputername ...obwohl der Name identisch ist.

Phoenix 21. Dez 2022 13:19

AW: Terminalserver, Datenbank, Computernahme ... Unterschiede?
 
Zitat:

Zitat von haentschman (Beitrag 1516506)
* unsere Software meldet sich bei der "Masterdatenbank" als gestartet an und meldet sich bei Beendingung wieder ab.

Sicher? Wie triggert ihr den Delete beim Beenden?
Bekommt die Anwendung überhaupt das richtige Signal zum beenden?
Möglicherweise wird einfach der Prozess terminiert bevor das Delete zur DB geschickt wird. Oder auf dem Terminalserver passiert irgendwas anders als auf einem normalen Desktop und er läuft da in einer Exception rein und trägt sich deswegen nicht mehr aus.

Könnt ihr vor und nach dem Absetzen des Delete-Statements mal loggen was passiert und im konkreten Fall das Log checken ob das beides drin steht?

haentschman 21. Dez 2022 13:27

AW: Terminalserver, Datenbank, Computernahme ... Unterschiede?
 
Zitat:

Wie triggert ihr den Delete beim Beenden?
Delphi-Quellcode:
procedure TfoMain.FormDestroy(Sender: TObject);
begin
  FMenuForm.Free;
  FLogic.Free;
  FreeAndNil(FPreferences);
  // sicher ist sicher :-)
  triMain.PopupMenu := nil;
  triMain.DropDownMenu := nil;
  inherited;
end;

// Messages
procedure TfoMain.WMQueryEndSession(var M: TWMQueryEndSession);
begin
  inherited;
  UnLock;
  Offline;
end;
Zitat:

Könnt ihr vor und nach dem Absetzen des Delete-Statements mal loggen was passiert und im konkreten Fall das Log checken ob das beides drin steht?
...bin ich schon dabei. :wink:

PS: Das habe ich gefunden. https://www.delphipraxis.net/181979-...-erkennen.html
...da muß ich mich durcharbeiten. :?

Zitat:

Bekommt die Anwendung überhaupt das richtige Signal zum beenden?
WMQueryEndSession ...gibts das auch beim Terminalserver?

Uwe Raabe 21. Dez 2022 13:42

AW: Terminalserver, Datenbank, Computernahme ... Unterschiede?
 
TApplication hat ein Event OnRemoteSessionChanged (leider nicht dokumentiert). Probier es doch mal damit.

johndoe049 22. Dez 2022 07:50

AW: Terminalserver, Datenbank, Computernahme ... Unterschiede?
 
[QUOTE=haentschman;1516512]
Zitat:

Wie triggert ihr den Delete beim Beenden?
Im Moment machen wir viel mit Lazarus/Free Pascal.

Warum übernimmt Ihr nicht FormClose? D.h. den Event, wenn man ein Formular schließt? Ausführung wird solange unterbrochen, bis in der Datenbank die Änderung durchgeführt wurde. Wenn das fehlschlägt, wird es wiederholt oder es gibt eine Fehlermeldung.

Bei uns hatten wir mit WMI etc. auf einem Terminalserver öfters Probleme. Je nach Benutzerrecht hat das Funktioniert oder auch nicht. Daher haben wir FormClose entsprechend angepasst.

Bei Terminalserver verwenden wir nicht nur Computername sondern noch ein weiteres Element, um den Benutzer eindeutig identifizieren zu können.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz