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

Développement SQL Server Discussion :

Mise en place accès concurrent pessimiste


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Inscrit en
    Septembre 2011
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Septembre 2011
    Messages : 1
    Par défaut Mise en place accès concurrent pessimiste
    Bonjour,
    Je dois gérer dans une application de gestion à certains endroit stratégique un système de gestion d'accès concurrent pessimiste :

    Quand un utilisateur "A" rendre en édition sur une commande je souhaite "bloquer" cette commande pour les autres utilisateurs.

    Si un autre utilisateur "B" essaye d'éditer cette commande je souhaite pouvoir détecter que la commande est déjà en cours de modification par un autre utilisateur et en l'informer l'utilisateur.

    La commande sera débloquée quand l'utilisateur "A" aura quitté l'édition du bon de commande.

    Un cas assez classique et pourtant j'ai du mal à trouvé de l'info et des exemples.



    J'ai identifié plusieurs solution :

    1 - bloquer des lignes dans une transaction avec un select xxx with(WITH (UPDLOCK, HOLDLOCK,ROWLOCK)
    2 - gérer un lock des lignes de façon logique (à la main en utilisant un flag)
    3 - j'ai trouver également des infos sur sp_getapplock mais j'avoue de pas maîtriser ce truc.

    Avez-vous des conseils à me donner ?

  2. #2
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    La première solution est la plus fiable, mais aussi :
    - La plus risquée (une personne qui modifie une donnée centrale à l'application et part en pause déjeuné sans valider, et elle bloque tout le monde)
    - La plus consommatrice en ressources (et provoque d'importants bottle neck)
    => A n'utiliser donc qu'aux endroits absolument nécessaires (contraintes d'intégrité)

    La seconde solution est à éviter comme la peste. On peut l'utiliser avec parcimonie, mais pour empêcher des actions bien précises d'être effectuées par plusieurs personnes en même temps. En effet, ajouter des tests de flag partout dans toutes les requêtes, c'est contre-performant, et source d'oublis qui peuvent devenir graves.

    Je ne connais pas cette troisème solution.

Discussions similaires

  1. mise en place de plusieurs point d'acces wifi
    Par feraz dans le forum Réseau
    Réponses: 0
    Dernier message: 10/11/2009, 10h01
  2. [MySQL] Mise en place d'un niveau d'accés
    Par tiesto95 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 25/01/2009, 14h03
  3. Réponses: 9
    Dernier message: 29/10/2008, 14h14
  4. Réponses: 1
    Dernier message: 10/01/2007, 12h04
  5. Réponses: 7
    Dernier message: 10/01/2007, 09h02

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