AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Anzahl lesen pro Tabelle
Thema durchsuchen
Ansicht
Themen-Optionen

Anzahl lesen pro Tabelle

Ein Thema von Pfaffe · begonnen am 1. Aug 2018 · letzter Beitrag vom 1. Aug 2018
Antwort Antwort
Pfaffe

Registriert seit: 29. Jan 2009
293 Beiträge
 
Delphi 12 Athens
 
#1

Anzahl lesen pro Tabelle

  Alt 1. Aug 2018, 13:33
Datenbank: ADS • Version: 12 • Zugriff über: Delphi ADS direkt
Advantage Database Server V12 - Dictionary wird verwendet.
Gibt es eine Möglichkeit die Anzahl der Lesezugriffe auf eine Tabelle zu ermitteln?
Mit einem Trigger geht es scheinbar nicht.
  Mit Zitat antworten Zitat
Benutzerbild von joachimd
joachimd

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

AW: Anzahl lesen pro Tabelle

  Alt 1. Aug 2018, 14:26
Advantage Database Server V12 - Dictionary wird verwendet.
Gibt es eine Möglichkeit die Anzahl der Lesezugriffe auf eine Tabelle zu ermitteln?
Mit einem Trigger geht es scheinbar nicht.
Falls Du nur wissen willst, wer wann die Tabelle geöffnet hat, kannst Du database trigger verwenden. Das ist aus einem meiner Workshops:
Code:
CREATE TABLE logtable(ts timestamp, event memo);

CREATE TRIGGER trig_opentable ON DATABASE AFTER OPEN_TABLE
BEGIN
  DECLARE @info STRING;
  if __info.tablename <> 'logtable' then
    @info = trim(__info.UserName)+' opened table '+
    trim(__info.tablename);
    INSERT INTO logtable VALUES(now(), @info);
  end;
END;

CREATE TRIGGER trig_closetable ON DATABASE AFTER CLOSE_TABLE
BEGIN
  DECLARE @info STRING;
  if __info.tablename <> 'logtable' then
    @info = trim(__info.UserName)+' closed table '+
    trim(__info.tablename);
    INSERT INTO logtable VALUES(now(), @info);
    end;
  END;
Schreib für jedes Öffnen Timestamp, user, tablename mit und werte es entsprechend aus.
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
563 Beiträge
 
Delphi XE6 Enterprise
 
#3

AW: Anzahl lesen pro Tabelle

  Alt 1. Aug 2018, 15:13
Falls Du nur wissen willst, wer wann die Tabelle geöffnet hat, kannst Du database trigger verwenden. Das ist aus einem meiner Workshops:

Schreib für jedes Öffnen Timestamp, user, tablename mit und werte es entsprechend aus.
Das Beispiel steht so ähnlich auch in der Onlinedoku. Aber da heißt es auch, wenn Caching aktiv ist und die Tabelle mehrfach nacheinander geöffnet wird, wie es SQL SELECT macht, dann bekommt man damit nur die erste Öffnung mit.

Da gäbs ja auch noch Management-SPs, die die gerade offenen Queries anzeigen mit einer Query-ID. Wenn man die jede Sekunde aufruft... ist aber auch doof. Die exakte Zahl der Aufrufe kann man vermutlich nur direkt im Programm lösen:
Per GRANT allen betroffenen Usern den direkten SELECT Zugriff auf die Tabelle verbieten.
Dann den Zugriff via SP machen und dort das Logging abhandeln.
Ist aber aufwendig.
  Mit Zitat antworten Zitat
Benutzerbild von joachimd
joachimd

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

AW: Anzahl lesen pro Tabelle

  Alt 1. Aug 2018, 15:25
Das Beispiel steht so ähnlich auch in der Onlinedoku. Aber da heißt es auch, wenn Caching aktiv ist und die Tabelle mehrfach nacheinander geöffnet wird, wie es SQL SELECT macht, dann bekommt man damit nur die erste Öffnung mit.
Habs gerade mit mehreren Benutzerzugängen und Tabellen mit aktiviertem Caching getestet. Jedes Öffnen und Schließen einer Tabelle wird geloggt - beim direkten Tabellenzugriff. Bei Static Cursorn (zB Joins) kann es vorkommen, dass die Tabellenoperation nicht mitgeschrieben wird.
Ohne SQL (direkter Tabellenzugriff über TAdsTable) wird immer mitgeschrieben.

Von einem Polling der Management API würde ich aus Performancegründen dringend abraten, ebenso vor der Verwendung von Stored Procedures.

Was hat der Initiator dieses Threads eigentlich genau vor?
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
563 Beiträge
 
Delphi XE6 Enterprise
 
#5

AW: Anzahl lesen pro Tabelle

  Alt 1. Aug 2018, 15:38
Von einem Polling der Management API würde ich aus Performancegründen dringend abraten, ebenso vor der Verwendung von Stored Procedures.
Den Tipp mit der SP habe ich aus Deinem Buch(*)

Was hat der Initiator dieses Threads eigentlich genau vor?
Vielleicht eine Art Datenschutz-Auditing a la "wer schaut wann/wie oft in die Kundendaten".


---
(*) ok, da gings um UPDATE statt SELECT, aber der Mechanismus wäre gleich.
  Mit Zitat antworten Zitat
Pfaffe

Registriert seit: 29. Jan 2009
293 Beiträge
 
Delphi 12 Athens
 
#6

AW: Anzahl lesen pro Tabelle

  Alt 1. Aug 2018, 18:02
Danke.
Habe mein Problem anders lösen können.
Das Öffnen und Schliessen hätte nicht gereicht.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Anzahl lesen pro Tabelle

  Alt 1. Aug 2018, 18:38
Danke.
Habe mein Problem anders lösen können.
Das Öffnen und Schliessen hätte nicht gereicht.
Das ist schön, so richtig wissen wir nicht was Dein Problem war, aber Du hast es gelöst.
Wie Du das gemacht hast, wissen wir auch nicht.

Das ist gut, weil, wenn demnächst jemand das gleiche Problem hat, können wir ihm nicht schreiben, da gibt es schon eine Lösung.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Pfaffe

Registriert seit: 29. Jan 2009
293 Beiträge
 
Delphi 12 Athens
 
#8

AW: Anzahl lesen pro Tabelle

  Alt 1. Aug 2018, 22:24
Oha, es handelte sich nicht um ein IT-Problem. Letztendlich konnte ich es auch ohne IT lösen. Auf Details möchte ich nicht eingehen.
In meiner Verzweiflung hatte ich gedacht, es wäre irgendwie möglich, meine Problemstellung durch Zählen von Lesezugriffe auf eine Datenbanktabelle zu lösen.
Wie an den Antworten schnell erkennbar war, ist diese nicht möglich.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.685 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Anzahl lesen pro Tabelle

  Alt 1. Aug 2018, 22:32
Es gäbe auch Datei/Pfad-Monitoring zu erwähnen. Da ich leider nicht weiß um was es sich handelt kann das natürlich auch falsch sein.
Gruß vom KodeZwerg
  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 07:59 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