p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Invité de passage
    Inscrit en
    mai 2010
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : mai 2010
    Messages : 1
    Points : 0
    Points
    0

    Par défaut Problème Transactions SQL multiserveur

    Hello,

    Ai un probleme un peu pointu, des idées pour le résoudre mais préfere des avis avant....

    Vais essayer d'etre simple...

    On part sur la base d'un système bancaire qui tourne sur plusieurs serveurs et UNE base de données SQL..

    J'ai un probleme qui se produit une fois par mois environ ...

    Supposons qu'un client fasse un retrait d'argent et qu'exactement au même moment on lui paye ses intérets bancaires...

    Le but d'un mouvement financier est de prendre le solde précédent et de le mouvementer du montant (+ ou -) de la transaction...

    Or quand je regardes mes logs serveurs les 2 transactions se débutent (à la meme milliseconde pret) en même temps et prennent dont toutes les 2 le même solde précédent ce qui provoque une incohérence (détectées vu qu'on check toutes les nuits) du solde du client...

    Aucun lock au niveau du serveur ne peut fonctionner car ce sont plusieurs serveurs distincts qui font les transactions..

    Mon idée .. une table de locks temporaires au niveau sql qui contient l'id du client et qui empeche toute autre transation tant qu'un lock est présent... le hic ... si pour une raison quelquonque de lock reste.. client bloqué ...

    Je suis prenneur de toute idée

  2. #2
    Membre à l'essai
    Inscrit en
    mars 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : mars 2007
    Messages : 29
    Points : 21
    Points
    21

    Par défaut

    Bonjour,

    l'idée est bonne.
    Pour ton problème de lock bloqué, tu peux faire tourner un script qui déloque au bout d'un certain délai (ta table temporaire prend le moment du lock)
    A toi de voir si tu le déloques automatique ou pas.

    exemple pour un delock au bout de 30 secondes et un script qui tourne toutes les minutes :
    Lock se fait à 20:00:05
    A 20:01:00 le lock existe depuis 55 secondes (> 30 secondes) => Delock

  3. #3
    Membre Expert
    Homme Profil pro
    Développeur Java
    Inscrit en
    octobre 2002
    Messages
    1 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : octobre 2002
    Messages : 1 380
    Points : 1 906
    Points
    1 906

    Par défaut

    Bonjour,

    Il suffit d'utiliser correctement le mécanisme de transaction de ta base de données SQL. Pas besoin de réinventer la roue. Quelle base utilises-tu?
    Bien le bonjour chez vous
    Jowo

  4. #4
    Nouveau Membre du Club
    Inscrit en
    décembre 2005
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : décembre 2005
    Messages : 31
    Points : 32
    Points
    32

    Par défaut

    cflock ? sans définir de scope ?

Discussions similaires

  1. Problème renvoie de valeurs (Fonction Transact SQL)
    Par chicken92000 dans le forum Développement
    Réponses: 1
    Dernier message: 12/09/2008, 15h18
  2. [transact SQL] problème d'ORDER BY
    Par thelpi dans le forum Langage SQL
    Réponses: 10
    Dernier message: 03/09/2008, 15h10
  3. [Transact-SQL] Problème avec "execute" dans un "if"
    Par dj_lil dans le forum MS SQL-Server
    Réponses: 9
    Dernier message: 18/12/2007, 15h56
  4. [Transact SQL] Problème recherche
    Par Escrow974 dans le forum MS SQL-Server
    Réponses: 2
    Dernier message: 11/09/2007, 14h56
  5. problème Transact SQL
    Par elderion dans le forum Langage SQL
    Réponses: 8
    Dernier message: 03/03/2006, 10h09

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