![]() |
Datenbank: interbase • Version: 6 • Zugriff über: sql
db änderungen protokollieren. aus delphi heraus. (IB)
Hallo,
ich hab mich heute daran gesetzt ein db-protokoll zu schreiben. und leider ist es mir aufgefallen, dass das gar nicht so einfach ist. also die insert und update stellen, die direkt in die sql.text bereiche der TIBQuery reingeschrieben wurden können auch problemlos abgefangen werden. aber mit den Datasets habe ich so meine probleme. sprich mit allem wo parameter an die query übergeben werden. wie geht das? habe mit schon überlegt sqlMonitor zu benutzen aber blicke die bedienung nicht. würde mich sehr freuen, wenn mir da jemand einen tipp geben könnte. vg ps:falls jemand fragen sollte warum ich diese aufgabe nicht auf eine udf etc verlagere.. der grund ist, dass ich benutzer in tabellen angelegt habe. und alle loggen sich mit dem selben benutzernamen in IB ein. es wäre also plausibler diese aufgabe unter delphi zu realisieren. (IMHO) :-) |
Re: db änderungen protokollieren. aus delphi heraus. (IB)
Zitat:
Hast du dir schon mal überlegt, clientseitig verschiedene Benutzer su verwenden? Dann könntest du u.U. das Problem per Trigger lösen oder auf FB2 upgraden, dann kannst du das anstatt benutzerbezogen, Clientbezogen machen. BTW. Was willst du damit bezwecken? |
Re: db änderungen protokollieren. aus delphi heraus. (IB)
hi. nun das war das "ps"...
ist habe mittlerweile eine lösung gefunden, aber sie klappt nur "zum sehen". also ich könnte mit den parametern die db nicht evtl per sql_spript wiederherstellen. mfg |
Re: db änderungen protokollieren. aus delphi heraus. (IB)
hallo. wie extrahiere ich denn die metadata?
ich weiss zwar, dass das mit IBExtract geht aber irgendwie finde ich keine einleuchtende methode um die prozedur auszuführen. vg |
Re: db änderungen protokollieren. aus delphi heraus. (IB)
oder gibt es in IB einen befehl, der mit im trigger z.b. den gerade ausgeführten sql code anzeigen kann?
|
Re: db änderungen protokollieren. aus delphi heraus. (IB)
Zitat:
|
Re: db änderungen protokollieren. aus delphi heraus. (IB)
hi mkinzler.
ja. ich will nur die änderungen protokollieren. ich habe zwar bereits eine (halb)lösung gefunden aber sag mir bitte was du meinst. hier meine lösung: in delphi den IBSQLMonitor benutzen und dann bei event auf die Prozedur WriteUserLosg(text) weisen. Die prozedur sieht dann so aus:
Delphi-Quellcode:
das klappt soweit ganz gut solange ich keine parameter benutze.
procedure TfmMain.writeUserLOG(msg:String);
var s , datei: String; tf,f : TextFile; pos:Integer; erg:String; begin if ((StrPos(PChar(UpperCase(msg)), PChar('INSERT'))<>nil) or (StrPos(PChar(UpperCase(msg)), PChar('UPDATE'))<>nil)) then begin AssignFile(tf, 'user_log.txt'); Append(tf); msg:=StringReplace(msg, '[Execute]', '[Execute] */'+#13, [rfReplaceAll]); end else exit; Write(tf, '/*: '+DateToStr(date())+' '+FormatDateTime('hh:mm:ss', Now)+' '+ trim(AktUser.name)+' '+trim(AktUser.vorname)+' UserID:'+ IntToStr(AktUser.userid)+':'+#13#10+msg+';'+#13+#13); CloseFile(tf); end; bei benutzung von parametern sehe ich zwar die zustandsänderungen aber ich kann diese dann nicht mehr in einen skrip kopieren und dann einfach ausführen lassen. (würde ich gerne als eine weitere schutzmaßname vor dem worstCase). so sieht der output der procedur aus: Zitat:
Zitat:
mfg |
Re: db änderungen protokollieren. aus delphi heraus. (IB)
Zitat:
|
Re: db änderungen protokollieren. aus delphi heraus. (IB)
hi hansa.
es muss in meinem falle eine txt datei am ende herauskommen. ob mit triggern oder ohne. mit triggern habe ich das auch schon versucht. das ist kein geringerer aufwand. ich wollte das mit einer udf lösen. die udf hat dann letzendlich gut fuinktioniert, aber die fehlerbehandlung mit den triggern hat sich als zu kompliziert herausgestellt. dabei kann man nicht einfach
Delphi-Quellcode:
denn die updates belaufe sich meistens nur ein einige wenige felder und es kommt zum fehler wenn es kein NEW.FELDn gibt.
TEMTPVAR=UDFNAME('UPDATE TABLENAME SET FELD1='||NEW.FELD1||', ...
und was mache ich mit blobs?? :oops: soviel dazu. oder habe ich da was mißverstanden? gruß |
Re: db änderungen protokollieren. aus delphi heraus. (IB)
hmm. überleg. vll. lag es daran, dass ich vergessen habe zu casten :pale:
:angel2: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:46 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-2025 by Thomas Breitkreuz