Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Advantage Local Server: Benutzer ermitteln (https://www.delphipraxis.net/134643-advantage-local-server-benutzer-ermitteln.html)

Mike_on_Tour 26. Mai 2009 10:36

Datenbank: Advantage Local Server • Version: 8.1 • Zugriff über: ADS-Komponenten

Advantage Local Server: Benutzer ermitteln
 
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
SQL-Code:
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

Bernhard Geyer 26. Mai 2009 10:39

Re: Advantage Local Server: Benutzer ermitteln
 
Zitat:

Zitat von Mike_on_Tour
... da dort eine Instanz des Advantage Local Server läuft.

Wiederspricht sich per Definition. Der ADS Local "Server" arbeitet nur mit Filezugriff auf den Datenbanktabellen. Es gibt keinen Server der läuft. Hier hast du es mit einer normalen Desktopdatenbank zu tun. Du kannst auf dem Server nachschauen wer die Dateien geöffnet hat.

Mike_on_Tour 26. Mai 2009 10:41

Re: Advantage Local Server: Benutzer ermitteln
 
Das mag sein. Momentan bekomme ich jedenfalls nicht die Informationen, die ich gern möchte. Ich könnte also etwas Hilfe oder einen Tip gebrauchen, egal wie der ADS läuft und arbeitet.

joachimd 26. Mai 2009 13:34

Re: Advantage Local Server: Benutzer ermitteln
 
Zitat:

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
SQL-Code:
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.

Mike_on_Tour 26. Mai 2009 13:44

Re: Advantage Local Server: Benutzer ermitteln
 
Zitat:

Zitat von joachimd
... Das Problem mit einer Logtabelle sehe ich, wenn ein Rechner absürzt und sich nicht mehr aus der Tabelle austragen kann.

Daran habe ich auch schon gedacht. Das war ja auch ein Grund für diesen Beitrag im Forum.
Mit einem Trigger muß ich das mal probieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:32 Uhr.

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