AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Terminalserver, Datenbank, Computernahme ... Unterschiede?
Thema durchsuchen
Ansicht
Themen-Optionen

Terminalserver, Datenbank, Computernahme ... Unterschiede?

Ein Thema von haentschman · begonnen am 21. Dez 2022 · letzter Beitrag vom 22. Dez 2022
Antwort Antwort
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.292 Beiträge
 
Delphi 12 Athens
 
#1

Terminalserver, Datenbank, Computernahme ... Unterschiede?

  Alt 21. Dez 2022, 12:56
Hallöle...

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...

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 )

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?

PS: Persönlich tippe ich auf: .GetWindowsComputername ...obwohl der Name identisch ist.
Miniaturansicht angehängter Grafiken
user.png   code.png   computer.png  

Geändert von haentschman (21. Dez 2022 um 13:17 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#2

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

  Alt 21. Dez 2022, 13:19
* 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?
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.292 Beiträge
 
Delphi 12 Athens
 
#3

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

  Alt 21. Dez 2022, 13:27
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.

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?

Geändert von haentschman (21. Dez 2022 um 13:30 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.009 Beiträge
 
Delphi 12 Athens
 
#4

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

  Alt 21. Dez 2022, 13:42
TApplication hat ein Event OnRemoteSessionChanged (leider nicht dokumentiert). Probier es doch mal damit.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
johndoe049

Registriert seit: 22. Okt 2006
128 Beiträge
 
#5

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

  Alt 22. Dez 2022, 07:50
[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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:46 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