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

SQL Firebird Discussion :

Procedure Stockée, Update et Deadlock


Sujet :

SQL Firebird

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3
    Par défaut Procedure Stockée, Update et Deadlock
    Bonjour,

    Via un soft developpé en delphi 7, je fait appel une procedure stockée de mon SGBD Firebird via ADO qui lui meme passe par ODBC.

    Ma chaine de connection :
    CNXSTRING=Provider=MSDASQL.1;Extended Properties="Driver=Firebird/InterBase(r) driver;Dbname=192.168.XXX.XXX:dbname;CHARSET=NONE"

    L'appel a ma procedure stockée :
    execute procedure CLI$MAJARTICLE (:0,:1,:2,:3,:4,:5,:6,:7,:8,:9,:10,:11,:12,:13,:14,:15,:16,:SITE)

    Cette procedure stockée fait des inserts et des updates tres simples dans ma base.

    Or, je me rend compte que ces modifications ne sont visibles par un autre utilisateur que environ une minute apres la fermeture de mon coposant BD.

    Durant cette minute les modif ne sont pas visibles, toute tentative de modif de ces enregistrements aboutie a un message d'erreur de type deadlock.
    lock conflict on no wait transaction
    deadlock
    update conflicts with concurrent update

    Exemple :
    Derniere Update : 17h52m15s (impossible de voir les modif d'un autre client)
    Fermeture de la connection : 17h54m15s (impossible de voir les modif d'un autre client)
    1 minute apres la fermeture : 17h55mh15 (tout va bien, on voit les modifs) alors que le programme ne fait rien pendant cette minute, enfin en tout cas il ne log aucune activité.

    Il est a noter que si tue la tache de ce soft, les modifs ne sont jamais
    "commitées".

    Tout se passe comme si la fermeture de la connection et donc le "commit" etait effectué avec environ 1 minute de retard (peut etre du a ADO, ODBC ou au soft que j'utilise).

    Suivant les symptomes decrits qu'en pensez-vous (ADO,ODBC ou le soft développé en delphi) ?
    Si c'est lié au driver (ADO ou ODBC), y'a t'il moyen de ne pas avoir ce délais ?

    A noter que quand je fait des updates directement dans ADO, sans
    passer par une procedure stockée, je n'ai aucun délais...
    genre : UPDATE XXXX SET etc.... et si je met exactement ce meme code dans ma procedure stockée, j'ai ce délais.

    Que le session soit ouverte en mode commitretaining ou commit ne change rien a ce délais.

    Merci d'avance de votre aide.

    - Jerome -

    Versions :
    Delphi : 7
    Firebird serveur et client : 1.5.3
    ODBC driver IBPhoenix : 2.00.00.129
    ADO : Mis a jour a vec la derniere version (je l'ai plus en tete la)

  2. #2
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Par défaut
    Salut

    Et si tu essais d'utiliser les composants IBX à la place de ADO rien que pour tester.
    J'utilise des procédures stockés et jamais eu de problème de avec les compos IBX ou FIBPlus.

    Cdt

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3
    Par défaut
    Je n'ai pas essayé, mais il y a quelques semaines je passais par IBX et j'avais un soucis de gestion memoire.

    Le soft fait beaucoup de requetes quasi en continu et au bout de quelques heures, il avait bouffé toute la memoire de l'ordi, et l'utilisateur avait des messages d'alerte de windows "Memoire inssufisante".

    Dès que je suis passé en ADO, plus de problème de memoire.

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    379
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 379
    Par défaut
    peut importe le moyen de connexion utilisé pour ce connecter à la base de données, il faut toujours faire "commit" pour valider les modifications et ainsi les autres utilisateurs verront les résultats immédiatements.

    mais il ne faut pas oublier que l'utilisateur qui est censé "voir" ces nouveaux résultats doit lui aussi "refaire" sa requête pour "rafraichir" les données.

Discussions similaires

  1. Gridview avec procedure stocké pour update
    Par Schnain dans le forum ASP.NET
    Réponses: 7
    Dernier message: 22/10/2010, 22h18
  2. Procedure stockée + insert update
    Par chouchou83 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 20/06/2008, 13h51
  3. Procedure stockée marche pas (2 update)
    Par tornade69 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/01/2008, 18h37
  4. Réponses: 2
    Dernier message: 17/01/2007, 09h01
  5. procedure stockée dans un dbbatch
    Par pram dans le forum XMLRAD
    Réponses: 4
    Dernier message: 07/02/2003, 16h35

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