View Full Version : ODBC Zugriffe protokollieren
Hallo zusammen,
kann ich irgendwo auf der AS400 sehen wer per ODBC auf die Daten zugreift?
(V5R3M0)
Ich weiss es geht mit PCSACC/400, aber gibt es da sonst keine Möglichkeiten?
Bietet OS400 da von Haus aus keine Möglichkeit?
Gruß
Annegret
NETSTAT -> Auswahl 3
Hiehr kannst du sehen, welche IP auf welchem Port verbunden ist.
ODBC ist "as_database".
Ggf. gibt es auch entsprechende API's.
... kommt immer darauf an, was man da eigentlich wissen will...
qsh cmd('system ''dsplog msgid(CPIAD09)'' | grep ''QZDASOINIT''')
gibt auch schon einiges her...
D*B
danke schon mal,
werde beides mal ausprobieren,
im Grunde will ich wissen welche Dateien auf der As400 "angefasst" werden...
Es sollte also ein Protokoll sein, was dies hergibt.
Gruß
Annegret
Da hilft dann wiederum nur das Audit-Journal.
Vielleicht hilft Dir ja schon mal das Tool WRKODBCJOB.
Bryan Dietz -- AS/400-iSeries-i5 Freeware Page (http://home.roadrunner.com/~jbmmdietz/wrkodbcjob.html)
holgerscherer
21-01-12, 13:19
kann ich irgendwo auf der AS400 sehen wer per ODBC auf die Daten zugreift?
Hallo,
wenn Du etwas basteln willst, nimm folgendes CL als Grundlage:
/*-------------------------------------------------------------------*/
/*‚DATENBANK-SERVER SQL EXIT PROGRAM €*/
/*-------------------------------------------------------------------*/
PGM PARM(&STATUS &REQUEST)
DCL VAR(&STATUS) TYPE(*CHAR) LEN(1)
DCL VAR(&REQUEST) TYPE(*CHAR) LEN(2000)
DCL VAR(&USER) TYPE(*CHAR) LEN(10)
DCL VAR(&SERVER) TYPE(*CHAR) LEN(10)
DCL VAR(&FORMAT) TYPE(*CHAR) LEN(8)
DCL VAR(&PKG) TYPE(*CHAR) LEN(10)
DCL VAR(&PKGLIB) TYPE(*CHAR) LEN(10)
DCL VAR(&SQL) TYPE(*CHAR) LEN(512)
DCL VAR(&TEXT) TYPE(*CHAR) LEN(800)
DCL VAR(&TEXT1) TYPE(*CHAR) LEN(75)
DCL VAR(&D) TYPE(*CHAR) LEN(30)
DCL VAR(&DATUM) TYPE(*CHAR) LEN(6)
DCL VAR(&ZEIT) TYPE(*CHAR) LEN(6)
DCL VAR(&MSGQ) TYPE(*CHAR) LEN(10) VALUE(SQLLOGS)
DCL VAR(&MSGQLIB) TYPE(*CHAR) LEN(10) VALUE(QGPL)
DCL VAR(&LOGDAT) TYPE(*CHAR) LEN(8) VALUE(' ')
DCL VAR(&LOGTIM) TYPE(*CHAR) LEN(8) VALUE(' ')
MONMSG MSGID(CPF0000 MCH0000)
CHGJOB JOB(*) LOGCLPGM(*NO)
CHGVAR VAR(&USER) VALUE(%SST(&REQUEST 1 10))
CHGVAR VAR(&SERVER) VALUE(%SST(&REQUEST 11 10))
CHGVAR VAR(&FORMAT) VALUE(%SST(&REQUEST 21 8))
CHGVAR VAR(&PKG) VALUE(%SST(&REQUEST 73 10))
CHGVAR VAR(&PKGLIB) VALUE(%SST(&REQUEST 83 10))
CHGVAR VAR(&SQL) VALUE(%SST(&REQUEST 96 512))
RTVSYSVAL SYSVAL(QDATE) RTNVAR(&DATUM)
RTVSYSVAL SYSVAL(QTIME) RTNVAR(&ZEIT)
IF COND(&ZEIT *LT '010000') THEN(DO)
RTVSYSVAL SYSVAL(QDATE) RTNVAR(&DATUM)
ENDDO
CVTDAT DATE(&DATUM) TOVAR(&D) FROMFMT(*SYSVAL) +
TOFMT(*SYSVAL) TOSEP(*SYSVAL)
CVTDAT DATE(&DATUM) TOVAR(&LOGDAT) FROMFMT(*SYSVAL) +
TOFMT(*SYSVAL) TOSEP(*SYSVAL)
CHGVAR VAR(&LOGTIM) VALUE(%SST(&ZEIT 1 2) *CAT ':' +
*CAT %SST(&ZEIT 3 2) *CAT ':' *CAT +
%SST(&ZEIT 5 2))
CHGVAR VAR(&D) VALUE(&D *BCAT %SST(&ZEIT 1 2) *CAT +
':' *CAT %SST(&ZEIT 3 2) *CAT ':' *CAT +
%SST(&ZEIT 5 2))
CHGVAR VAR(&TEXT1) VALUE(&D *BCAT &USER) +
IF COND(&PKG *NE ' ') THEN(CHGVAR VAR(&TEXT1) +
VALUE(&TEXT1 *BCAT &PKGLIB *TCAT '/' +
*TCAT &PKG))
CHGVAR VAR(&TEXT) VALUE(&TEXT1 *BCAT &SQL)
MONMSG MSGID(CPF0000) EXEC(DO)
SNDMSG MSG('!! ADDSQLLOG: ' *TCAT &SQL) TOUSR(QSYSOPR)
ENDPGM
Das Ganze dann in den Exit-Punkt QIBM_QZDA_SQL1
-h