Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
J’ai une petite question : J’ai une application dans la quelle je manipule plusieurs datastores et datawindows, ce que j’ai voulu savoir est ce que je peux tracer tout les requêtes (càd explorer) envoyer à la base suite à un commit ou une update des datawindows
Cordialement,
Dernière modification par infopower (23-03-2012 10:02:47)
Hors ligne
Dans le cas des connexions ODBC, on peut tracer toutes les requêtes (voir dans "Database profile setup", onglet "connection", case à cocher "Generate trace").
Pour les autres connexions, je ne sais pas (mais ça doit certainement exister).
Hors ligne
Bonjour
Un grand merci pour la réponse, mais comment le système va générer le traçage dans un fichier ? Si oui c’est comment que je puisse paramétrer le chemin et où il le génère par défaut.
Hors ligne
Bonjour,
tu peux aussi mettre TRACE devant le paramètre DBMS et laisser PB faire...
DBMS =TRACE O10 Oracle10g (10.1.0) par exemple
Hors ligne
Je faisais le traçage le système à généré un fichier PBP (perl builder) avez vous une idée comment je peux le lire je cherchais mais pas je ai pas trouvé une solution
Hors ligne
Hors ligne
J’ai voulu traçer le requêtes SGL (genre select,insert,update….)
J’ai utilisé le script suivant
TraceOpen("d:\trace.log",TimerNone!) //TraceEnableActivity(ActRoutine!) TraceEnableActivity(ActESQL!) Traceclose()
Après le traçage, j’avais un fichier incompréhensible (illisible)
Avez-vous un exemple des script de traçage
Hors ligne
Comme dans l'article qui est rappelé
erasorz a écrit:
http://pbadonf.fr/forum/viewtopic.php?id=502
Ton fichier pbp doit s'ouvrir avec File > New > onglet Tool > Profiling Trace View.
Il faut sélectionner le target (*.pbt) puis le fameux pbp.
Par contre, tu n'y trouvera pas le détail des SQL, mais le type des requêtes (DB Commit, DB Select, DB Prepare, DB Describe, DB Open ...).
De plus ce fichier permet de "profiler" le code, non pas logger les sql exécutes.
Tu peux éventuellement utiliser sur l'objet transaction l'event sqlpreview(sqlfunc, sqlsyntax ); pour cela, il te faut PB>=115 il me semble.
Et bien-sur avoir définit un objet hérité de transaction sur le quel tu pourras tracer. Dans le cas le plus courrant de SQLCA, il faut le paramétrer dans l'objet application > onglet général des propriétés > bouton Additional Properties > Onglet Variable Types > champ SQLCA. Là on met par exemple n_cst_tr un userobject hérité de transaction.
Hors ligne
Bonjour
Merci pour ta réponse ce qui est demandé, c’est de trouver un script qui permet de suivre toutes les transactions vers la base de données. Ensuite un autre script doit analyser le fichier généré et afficher les résultats dans un rapport. Mais si j’ai bien compris on peut pas lire le fichier pbp en mode exe car le système doit générer le fichier et analyser le fichier après chaque traitement et affiche le rapport tout ça va se faire au niveau code
Hors ligne
Une autre piste est de regarder au niveau du SGBDR. Par exemple sous Oracle :
SELECT * FROM v$sqlarea
Hors ligne
As-tu essayé le TRACE ?
On retrouve pas mal d'infos dans le fichier LOG généré par PB, et entre autre les requêtes. C'est tracé dans un fichier texte, directement lisible avec notepad...
Ex:
/*---------------------------------------------------*/
/* 27/02/2012 16:57 */
/*---------------------------------------------------*/
(4670c10): LOGIN: (134.436 MS / 134.436 MS)
(4670c10): CONNECT TO TRACE O10 ORACLE10G (10.1.0):
(4670c10): USERID=****
(4670c10): DATABASE=****
(4670c10): LOGID=****
(4670c10): SERVER=****
(4670c10): DBPARM=Disablebind=1, DelimitIdentifier = 'yes', DisableUnicode=1 (0.000 MS / 134.436 MS)
(4670c10): PREPARE: (0.000 MS / 134.436 MS)
(4670c10): BEGIN TRANSACTION: (0.000 MS / 134.436 MS)
(4670c10): PREPARE:
(4670c10): SELECT upper(ALL_SYNONYMS.SYNONYM_NAME), upper(column_name) FROM ALL_SYNONYMS, ALL_CONSTRAINTS, ALL_CONS_COLUMNS where constraint_type = 'P' and ALL_CONSTRAINTS.table_name = ALL_SYNONYMS.TABLE_NAME and ALL_CONSTRAINTS.constraint_name = ALL_CONS_COLUMNS.CONSTRAINT_NAME (0.036 MS / 134.472 MS)
(4670c10): DESCRIBE: (1.260 MS / 135.732 MS)
(4670c10): name=upper(all_synonyms.synonym_name),len=31,type=VCHAR,pbt=2,dbt=1,ct=1,prec=0,scale=0
(4670c10): name=upper(column_name),len=4001,type=VCHAR,pbt=2,dbt=1,ct=1,prec=0,scale=0
(4670c10): GET EXTENDED ATTRIBUTES: TABLE=ALL_SYNONYMS OWNER=****
(4670c10): SELECT OWNER, TABLE_NAME, TABLE_TYPE FROM SYS.ALL_CATALOG WHERE TABLE_TYPE IN ('TABLE','VIEW')AND OWNER = '****' AND TABLE_NAME = 'ALL_SYNONYMS' (0.000 MS / 135.732 MS)
(4670c10): SELECT OWNER, SYNONYM_NAME FROM SYS.ALL_SYNONYMS WHERE OWNER = '****' AND SYNONYM_NAME = 'ALL_SYNONYMS' (0.000 MS / 135.732 MS)
(4670c10): SELECT OWNER, SYNONYM_NAME FROM SYS.ALL_SYNONYMS WHERE OWNER = 'PUBLIC' AND SYNONYM_NAME = 'ALL_SYNONYMS' (0.000 MS / 135.732 MS)
(4670c10): SELECT PBD_FHGT,PBD_FWGT,PBD_FITL,PBD_FUNL,PBD_FCHR,PBD_FPTC,PBD_FFCE,PBH_FHGT,PBH_FWGT,PBH_FITL,PBH_FUNL,PBH_FCHR,PBH_FPTC,PBH_FFCE,PBL_FHGT,PBL_FWGT,PBL_FITL,PBL_FUNL,PBL_FCHR,PBL_FPTC,PBL_FFCE,PBT_CMNT FROM SYSTEM.PBCATTBL WHERE PBT_OWNR = 'PUBLIC' AND PBT_TNAM = 'ALL_SYNONYMS' (0.000 MS / 135.732 MS) (78.641 MS / 214.373 MS)
(4670c10): GET EXTENDED ATTRIBUTES: TABLE=ALL_CONSTRAINTS OWNER=****
(4670c10): SELECT OWNER, TABLE_NAME, TABLE_TYPE FROM SYS.ALL_CATALOG WHERE TABLE_TYPE IN ('TABLE','VIEW')AND OWNER = '****' AND TABLE_NAME = 'ALL_CONSTRAINTS' (0.000 MS / 214.373 MS)
(4670c10): SELECT OWNER, SYNONYM_NAME FROM SYS.ALL_SYNONYMS WHERE OWNER = '****' AND SYNONYM_NAME = 'ALL_CONSTRAINTS' (0.000 MS / 214.373 MS)
(4670c10): SELECT OWNER, SYNONYM_NAME FROM SYS.ALL_SYNONYMS WHERE OWNER = 'PUBLIC' AND SYNONYM_NAME = 'ALL_CONSTRAINTS' (0.000 MS / 214.373 MS)
(4670c10): SELECT PBD_FHGT,PBD_FWGT,PBD_FITL,PBD_FUNL,PBD_FCHR,PBD_FPTC,PBD_FFCE,PBH_FHGT,PBH_FWGT,PBH_FITL,PBH_FUNL,PBH_FCHR,PBH_FPTC,PBH_FFCE,PBL_FHGT,PBL_FWGT,PBL_FITL,PBL_FUNL,PBL_FCHR,PBL_FPTC,PBL_FFCE,PBT_CMNT FROM SYSTEM.PBCATTBL WHERE PBT_OWNR = 'PUBLIC' AND PBT_TNAM = 'ALL_CONSTRAINTS' (0.000 MS / 214.373 MS) (63.298 MS / 277.671 MS)
(4670c10): GET EXTENDED ATTRIBUTES: TABLE=ALL_CONS_COLUMNS OWNER=****
(4670c10): SELECT OWNER, TABLE_NAME, TABLE_TYPE FROM SYS.ALL_CATALOG WHERE TABLE_TYPE IN ('TABLE','VIEW')AND OWNER = '****' AND TABLE_NAME = 'ALL_CONS_COLUMNS' (0.000 MS / 277.671 MS)
(4670c10): SELECT OWNER, SYNONYM_NAME FROM SYS.ALL_SYNONYMS WHERE OWNER = '****' AND SYNONYM_NAME = 'ALL_CONS_COLUMNS' (0.000 MS / 277.671 MS)
(4670c10): SELECT OWNER, SYNONYM_NAME FROM SYS.ALL_SYNONYMS WHERE OWNER = 'PUBLIC' AND SYNONYM_NAME = 'ALL_CONS_COLUMNS' (0.000 MS / 277.671 MS)
(4670c10): SELECT PBD_FHGT,PBD_FWGT,PBD_FITL,PBD_FUNL,PBD_FCHR,PBD_FPTC,PBD_FFCE,PBH_FHGT,PBH_FWGT,PBH_FITL,PBH_FUNL,PBH_FCHR,PBH_FPTC,PBH_FFCE,PBL_FHGT,PBL_FWGT,PBL_FITL,PBL_FUNL,PBL_FCHR,PBL_FPTC,PBL_FFCE,PBT_CMNT FROM SYSTEM.PBCATTBL WHERE PBT_OWNR = 'PUBLIC' AND PBT_TNAM = 'ALL_CONS_COLUMNS' (0.000 MS / 277.671 MS) (63.671 MS / 341.342 MS)
(4670c10): SELECT PBV_NAME,PBV_VALD,PBV_TYPE,PBV_CNTR,PBV_MSG FROM SYSTEM.PBCATVLD (0.000 MS / 341.342 MS)
(4670c10): SELECT PBF_NAME,PBF_FRMT,PBF_TYPE,PBF_CNTR FROM SYSTEM.PBCATFMT (0.000 MS / 341.342 MS)
(4670c10): SELECT PBE_NAME,PBE_EDIT,PBE_TYPE,PBE_CNTR,PBE_WORK,PBE_SEQN,PBE_FLAG FROM SYSTEM.PBCATEDT ORDER BY PBE_NAME,PBE_SEQN (0.000 MS / 341.342 MS)
(4670c10): SELECT PBC_CNAM,PBC_TNAM,PBC_OWNR,PBC_LABL,PBC_LPOS,PBC_HDR,PBC_HPOS,PBC_JTFY,PBC_MASK,PBC_CASE,PBC_HGHT,PBC_WDTH,PBC_PTRN,PBC_BMAP,PBC_INIT,PBC_EDIT,PBC_CMNT FROM SYSTEM.PBCATCOL WHERE (PBC_TNAM = 'ALL_SYNONYMS' AND PBC_OWNR = '****') OR (PBC_TNAM = 'ALL_CONSTRAINTS' AND PBC_OWNR = '****') OR (PBC_TNAM = 'ALL_CONS_COLUMNS' AND PBC_OWNR = '****') (0.000 MS / 341.342 MS)
(1225c10): PREPARE:
(1225c10): SELECT upper(ALL_SYNONYMS.SYNONYM_NAME), upper(column_name) FROM ALL_SYNONYMS, ALL_CONSTRAINTS, ALL_CONS_COLUMNS where constraint_type = 'P' and ALL_CONSTRAINTS.table_name = ALL_SYNONYMS.TABLE_NAME and ALL_CONSTRAINTS.constraint_name = ALL_CONS_COLUMNS.CONSTRAINT_NAME (0.055 MS / 130.475 MS)
(1225c10): BIND SELECT OUTPUT BUFFER (DataWindow): (0.138 MS / 130.613 MS)
(1225c10): ,len=31,type=CHAR,pbt=1,dbt=0,ct=0,prec=0,scale=0
(1225c10): ,len=4001,type=CHAR,pbt=1,dbt=0,ct=0,prec=0,scale=0
(1225c10): EXECUTE: (693.668 MS / 824.281 MS)
(1225c10): FETCH NEXT: (436.787 MS / 1261.068 MS)
(1225c10): COLUMN=STATS$BG_EVENT_SUMMARY COLUM
...
Hors ligne
Bonjour
Merci pour les réponses
Je vais essayer d’effectuer le traçage en utilisant sqlpreview (avez-vous des exemples des script avec la quelle je peux commencer)
Cordialement
Hors ligne
string ls_sqlfunction choose case sqlfunc case sqldbdelete! ; ls_sqlfunction = "sqldbdelete!" case sqldbinsert! ; ls_sqlfunction = "sqldbinsert!" case sqldbothers! ; ls_sqlfunction = "sqldbothers!" case sqldbprocedure! ; ls_sqlfunction = "sqldbprocedure!" case sqldbrpc! ; ls_sqlfunction = "sqldbrpc!" case sqldbselect! ; ls_sqlfunction = "sqldbselect!" case sqldbupdate! ; ls_sqlfunction = "sqldbupdate!" case else ; ls_sqlfunction = "Unknow !!!!" end choose OutputDebugString( "SqlPreview: "+ls_sqlfunction + " => " + sqlsyntax) //external function // SUBROUTINE OutputDebugString (String lpszOutputString) LIBRARY "kernel32.dll" ALIAS FOR "OutputDebugStringW;Unicode";
Ensuite, il suffit d'ouvrir DebugView par exemple
Hors ligne
merci
J'ai un user objet trasaction uo_tr ,c'est dans ce dernier que doive mettre ce code pour pouvoir traçer tout les transaction
Hors ligne
juste pour vérifier mais t'es en quelle version de PB sur ce projet ?
Hors ligne
PB11.5
Hors ligne
donc tu peux y arriver avec slqpreview, j'avoue n'avoir jamais tenté le truc du DBMS = "trace ...", à voir celui qui sera le plus pratique dans ton cas.
Hors ligne
Merci pour vos réponses
Hors ligne