IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Firebird Discussion :

Update Monitoring Table


Sujet :

Firebird

  1. #1
    Membre éclairé
    Femme Profil pro
    Inscrit en
    Avril 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2007
    Messages : 209
    Par défaut Update Monitoring Table
    Bonjour tout le monde!

    J'ai un petit soucis avec une application Delphi 6 qui fonctionne avec une base de données Firebird 2.1

    J'aimerais utiliser le monitoring de table et lister les attachements actifs.
    J'utilise donc une requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM MON$ATTACHMENTS
    La requête fonctionne très bien si je vais directement dans ma BDD sans passer par delphi. J'utilise par exemple le petit outil DBEXPL32. Chaque fois que j'execute la requête les attachements sont mis à jour et j'ai la liste de tous ceux qui utilisent ma BDD. On voit également que le N° d'attachement utilisé par DBEXPL32 reste toujours le même, la connexion n'est donc pas interrompue pour mettre à jour la table virtuelle MON$ATTACHMENTS

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Requête 1:
     
    MON$ATTACHMENT_ID  |  MON$REMOTE_PROCESS
    -------------------+--------------------------
        1234           | DBEXPL32.EXE
     
    Requête 2 : ('Après l''ouverture d''une deuxième session DBEXPL32.EXE')              
     
    MON$ATTACHMENT_ID  |  MON$REMOTE_PROCESS
    -------------------+--------------------------
        1234           | DBEXPL32.EXE
        1235           | DBEXPL32.EXE

    La situation se corse lorsque j'essaie de faire la même chose depuis mon application delphi. j'utilise un composant TDatabase et un TwwQuery pour me connecter et là, les changements n'apparaissent pas dans la liste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Requête 1:
     
    MON$ATTACHMENT_ID  |  MON$REMOTE_PROCESS
    -------------------+--------------------------
        1234           | MonAppliDelphi.EXE
     
    Requête 2 : ('Après l''ouverture d''une deuxième session MonAppliDelphi.EXE')              
     
    MON$ATTACHMENT_ID  |  MonAppliDelphi.EXE
    -------------------+--------------------------
        1234           | MonAppliDelphi.EXE
    Si je ferme la base de donnée et la réouvre avant d'exécuter ma requête, les changements apparaissent mais le n° d'attachement est modifié (Dans ce cas-ci, le 1234) ce qui est un problème vu que j'utilise justement ce N° d'attachement tout au long de mon application.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    Requête 1:
     
    MON$ATTACHMENT_ID  |  MON$REMOTE_PROCESS
    -------------------+--------------------------
        1234           | MonAppliDelphi.EXE
     
    Requête 2 : ('Après l''ouverture d''une deuxième session MonAppliDelphi.EXE')
    (Fermeture et réouverture de la BDD)              
     
    MON$ATTACHMENT_ID  |  MON$REMOTE_PROCESS
    -------------------+--------------------------
        1236           | MonAppliDelphi.EXE
        1237           | MonAppliDelphi.EXE
     
    Résultat souhaité : 
    ('Après l''ouverture d''une deuxième session MonAppliDelphi.EXE')
     
    MON$ATTACHMENT_ID  |  MON$REMOTE_PROCESS
    -------------------+--------------------------
        1234           | MonAppliDelphi.EXE
        1235           | MonAppliDelphi.EXE
    D'après ce que j'ai lu, la table MON$ATTACHMENTS est virtuelle et pas mise à jour tout le temps. Peut-être mon problème vient-il de là. Si c'est le cas, quelqu'un connaît-il un moyen de forcer la mise à jour et la recréation de cette table sans fermer la base de données?
    Ou alors Quelqu'un connait-il une solution à mon problème?

    Merci d'avance

  2. #2
    Membre Expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Par défaut
    Citation Envoyé par Nono23 Voir le message
    D'après ce que j'ai lu, la table MON$ATTACHMENTS est virtuelle et pas mise à jour tout le temps. Peut-être mon problème vient-il de là. Si c'est le cas, quelqu'un connaît-il un moyen de forcer la mise à jour et la recréation de cette table sans fermer la base de données?
    Ou alors Quelqu'un connait-il une solution à mon problème?

    Merci d'avance
    les données sont mises à jour par transaction
    pseudo code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    start transaction;
    Requête 1:
     
    MON$ATTACHMENT_ID  |  MON$REMOTE_PROCESS
    -------------------+--------------------------
        1234           | MonAppliDelphi.EXE
     
    COMMIT;
     
    start transaction; 
    Requête 2 : 
     
    MON$ATTACHMENT_ID  |  MON$REMOTE_PROCESS
    -------------------+--------------------------
        1234           | MonAppliDelphi.EXE
        1235           | MonAppliDelphi.EXE
    donc quand on gère ses transactions pas de problème.

  3. #3
    Membre éclairé
    Femme Profil pro
    Inscrit en
    Avril 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2007
    Messages : 209
    Par défaut
    Oh super ça fonctionne avec ta solution Makowski. C'est exactement ce que je cherchais.

    Merci beaucoup.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. ERROR: insert or update on table "ecole" violate
    Par doulel dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 17/04/2006, 21h24
  2. [Oracle 9i] Triggers sur les updates de tables
    Par zestrellita dans le forum Oracle
    Réponses: 12
    Dernier message: 07/12/2005, 11h32
  3. [update]deux tables dans la requete
    Par thief dans le forum Oracle
    Réponses: 2
    Dernier message: 02/09/2005, 16h45
  4. update large table et verrous
    Par pascalste dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 25/07/2005, 09h42
  5. UPDATE multi-tables sous SQL Server
    Par Cybernet dans le forum Langage SQL
    Réponses: 8
    Dernier message: 25/03/2004, 15h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo