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

MS SQL Server Discussion :

Replication et verrouillage


Sujet :

MS SQL Server

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 57
    Points : 37
    Points
    37
    Par défaut Replication et verrouillage
    Bonjour à tous !

    J'ai mis en place une réplication de type Merge avec un Publisher et plusieurs Subscribers.

    J'aimerai savoir s'il est possible, via une requête SQL par exemple, d'envoyer une information de vérouillage d'une ligne d'une table à un moment M (par exemple, lorsqu'un utilisateur de mon application ouvre une fenêtre client, d'envoyer une information empêchant les autres Subscribers de modifier ce même client).

    Si oui, comment faire ? Ma solution actuelle consiste à ajouter des champs "Lock" (booléen) et "UserLock" (pour l'identification du Subscriber), mis à jour dès que nécessaire. Le problème étant que si ce Subscriber se déconnecte du réseau, ce champ va rester à Lock à jamais ... Je suis obligé de faire un script pour nettoyer les locks régulièrement.

    Quelqu'un voit une autre solution ?

    Merci d'avance.

  2. #2
    Yad
    Yad est déconnecté
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 58
    Points : 58
    Points
    58
    Par défaut
    Pourquoi veux tu bloquer les autres abonnés ?

    Il me semble que cette réplication gére très bien tout ça ... en effet, si 2 abonnés changent une même données à un même moment, SQL server sait très bien comment gérer ça tout seul ... au pire il y aura un conflit et tu as accès à l'utilitaire de résolution des conflits ...

    Enfin, je ne sais pas, je ne suis pas un pro, moi je laisse faire le serveur et je ne rencontre pas de problèmes ...

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 57
    Points : 37
    Points
    37
    Par défaut
    Ben c'est très simple, si j'ai deux clients connectés en même temps au Publisher.

    Le client A ouvre une fenêtre d'édition de la Table "Commande" (par exemple), et comment à éditer la commande 1.

    2 secondes plus tard, le client B ouvre cette même fenêtre d'édition.

    Le client A enregistre la modification, puis le client B. Les modifications du client A vont être écrasé (ou celle du client B selon la configuration du conflit) sans qu'aucune autre précaution ne soit prise.

    Cela aurait pu être évité si le client B n'avait pas pu ouvrir la commande 1.

    Je continue de chercher la meilleure solution :o, merci quand même.

  4. #4
    Yad
    Yad est déconnecté
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 58
    Points : 58
    Points
    58
    Par défaut
    Oui mais tes abonnés peuvent travailler en mode non connecté non ?

    Et si ils changent en non connecté un enregistrement le Lundi mais ne se connecte que le Vendredi ? Que se passe t il ?

    A mon avis tu te complique la vie ...

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 57
    Points : 37
    Points
    37
    Par défaut
    Je me complique peut être la vie mais je fais juste ce qu'on me demande de faire moi ! Si j'avais le choix j'aurais fait beaucoup plus simple !

    S'il travaille en mode non connecté, là évidemment on ne peut que s'en remettre au Conflict Management fait par SQL Server !

  6. #6
    Yad
    Yad est déconnecté
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 58
    Points : 58
    Points
    58
    Par défaut
    Bon ... si on te le demande alors ... effectivement ...

    Voyons ce que les pros vont répondre, c'est intérressant ...

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 57
    Points : 37
    Points
    37
    Par défaut
    Personne n'en pense quelque chose apparament !

  8. #8
    Yad
    Yad est déconnecté
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 58
    Points : 58
    Points
    58
    Par défaut
    Oui ... les réponses sur les réplications ne sont pas nombreuses ici ... mais c'est pas grave ... il faut bien commencer ...

    Allez ... patience ...

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 57
    Points : 37
    Points
    37
    Par défaut
    Oui de toute façon je ne vois pas de possibilité de vérouiller une table (ou idéalement un champ d'une table) directement via la réplication ...

    Cela passe forcément par un champ booléen dans ma table.

    Enfin je n'ai rien trouvé quoi. Je vais partir sur cette solution, ça évitera déjà des conflits entre 2 clients connectés. Son principal désavantage est de m'obliger à mettre ce lock sur tout ce qui peut être utilisé par plusieurs clients ...

    Je vais chercher, si quelqu'un s'y connait en vérouillage manuel de champ/table, qu'il n'hésite pas (promis j'arrête de vous embêter après ... au moins cette semaine ) !

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 57
    Points : 37
    Points
    37
    Par défaut
    Apparament il est possible de vérouiller une table ou même une ligne, mais dans le cas d'une Merge replication, il faudrait non pas vérouiller le client mais le Publisher.

    Et là je vois pas trop. Mais mes recherches continuent.

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 57
    Points : 37
    Points
    37
    Par défaut
    Quelqu'un sait comment gérer manuellement les vérous ? Personne ?

  12. #12
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 862
    Points : 53 013
    Points
    53 013
    Billets dans le blog
    6
    Par défaut
    Pour gérer manuellement les verrous : ajoute une clause WITH à chaquer table dans tes requêtes.

    Cela dit ce que tu veut faire est le plus sûr moyen de bloquer le serveur et pourrir les données.

    1) l'utilisation direct de verrous est FORTEMENT déconseillée
    2) le blocage d'une resource pendant la réplication induit des temps de latence plus grand
    3) une réplication fusion dans une base mal modélisée est le plus sûr moyen de se retrouver avec des conflits ingérables.

    A +

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 57
    Points : 37
    Points
    37
    Par défaut
    Merci pour ta réponse. On va essayer de contourner le problème alors, en restreignant d'avantage les publications pour que les clients aient un minimum de données disponibles en commun.

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

Discussions similaires

  1. [ SYBASE ] Replication server 12.1
    Par 6rose dans le forum Sybase
    Réponses: 3
    Dernier message: 29/08/2003, 13h38
  2. [SYBASE]Verrouillage
    Par 6rose dans le forum Sybase
    Réponses: 7
    Dernier message: 22/07/2003, 09h16
  3. Recommandations sur le verrouillage Access
    Par leduke dans le forum Access
    Réponses: 4
    Dernier message: 26/05/2003, 14h02
  4. [SYBASE] Replication Server
    Par 6rose dans le forum Sybase
    Réponses: 4
    Dernier message: 09/05/2003, 12h56
  5. [NON RESOLU][PostgreSQL] Replication
    Par ive69 dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 30/04/2003, 16h11

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