Einzelnen Beitrag anzeigen

Benutzerbild von joachimd
joachimd

Registriert seit: 17. Feb 2005
Ort: Weitingen
672 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Advantage Local Server: Benutzer ermitteln

  Alt 26. Mai 2009, 12:34
Zitat von Mike_on_Tour:
Hallo,

ich suche nach einer Möglichkeit, alle aktuellen Benutzer einer Datenbank (Dictionary) des Advantage Local Servers für eine Auswertung zu ermitteln. Die Datenbank selbst befindet sich auf einem zentralen Computer und der Zugriff erfolgt von bis zu drei verschiedenen Arbeitstationen. Meine bisherigen Recherchen haben ergeben, daß ich nur Informationen der Arbeitsstation bekomme, da dort eine Instanz des Advantage Local Server läuft.
z.B. mit EXECUTE PROECEDURE sp_mgGetConnectedUsers() Eine andere Lösung wäre über die Datenbank selbst, also eine Art Logbuch. Über einen Denkanstoß für einen der beiden Ansätze würde ich mich freuen.

Mike
Wie Bernhard schon schrieb, geht das beim Local Server nicht.
Das Problem mit einer Logtabelle sehe ich, wenn ein Rechner absürzt und sich nicht mehr aus der Tabelle austragen kann.
Hier eventuell die Lösung über Trigger: Bei jeder Operation (insert, update, delete) auf alle DB-Tabellen soll die Workstation den Timestamp ihres Eintrages in der Logtabelle aktualisieren. Ist ein Eintrag zB >5 Minuten alt, so wird er gelöscht.

Beispiel:
SQL-Code:
create trigger my_ins on mytest after insert
begin
  merge mylog on (loginname=user())
    when matched then update set lastactive=now()
   when not matched then insert(loginname,lastactive) values(user(),now());
  delete from mylog where timestampadd(SQL_TSI_MINUTE, 5, lastactive)<now();
end;
Falls Du das nicht auf Benutzerebene machen willst, kannst Du auch ApplicationId() auf den Namen des jeweiligen Client-Rechners setzen und das stattdessen verwenden.
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat