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.