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 :

Verrouiller les enregistrements


Sujet :

MS SQL Server

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

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Verrouiller les enregistrements
    Bonjour à tous.
    Comment faire pour verrouiller les enregistrements ?

    Base de données : SQL Server 2005
    Environnement de développement : Visual Basic 2005

    Je développe une application qui sera utilisée par plusieurs utilisateur en même temps.

    Comment faire pour verrouiller les enregistrements en vb.net ?

    Par exemple si je lit ou modifie un enregistrement il ne faut pas qu'un autre utilisateur puise le faire en même temps.

    Il me semble que ce n'est pas possible en DOTNET !
    Faut-il utiliser OLEDB, ODBC, ADO ou autre ?
    Peut-on utiliser la syntaxe suivante : "Select * From MaTable (WITH UPDLOCK)"


    Merci par avance pour votre aide.

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 249
    Points : 1 745
    Points
    1 745
    Par défaut
    C'est ce qu'on appelle la problématique des accès concurrents sur Sql Serveur.
    C'est assez complexe. vous devez mettre en place une transaction.

    Pour en savoir plus, un article de sql pro : http://sqlpro.developpez.com/cours/sqlaz/techniques/#L1

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

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Verrouiller les enregistrements
    Ok, sur le principe j'ai compris comment ça fonctionne.
    Je dois ouvrir une transaction, bloquer l'enregistrement pour que personne ne puisse le modifier et/ou le lire, effectuer ma modification, puis valider ou annuler la transaction pour libérer l'enregistrement.

    Mais concrètement comment on fait pour tout ceci en œuvre dans VisualBasic2005 avec une base de données SqlServeur2005?

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 249
    Points : 1 745
    Points
    1 745
    Par défaut
    le mieux est d'utiliser une procédure stockée! vous appelez la procédure stockée en Visual basic, vous faites votre transaction à l'intérieur de la procédure stockée.

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 901
    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 901
    Points : 53 143
    Points
    53 143
    Billets dans le blog
    6
    Par défaut
    ATTENTION :
    1) par défaut un SGBDR verrouille de manière automatique. Vous n'avez en principe rien à faire que UPDATE, INSERT OU DELETE.
    2) si vous avez besoin d'une transaction (uniquement dans le cas de mises à jours combinées) certains niveaux d'isolation permettent quand même d'accéder aux tables manipulées dans la transaction par d'autres utilisateurs.
    3) le verrouillage explicite est fortement déconseillé : il n'est pas dynamique et donc pénalise fortement les autres utilisateurs ce qui induit de la contention et donc des temps de réponse allongés.

    Avant de vous amuser à pourrir vote bases de verrous, dites nous ce que vous voulez faire... Cela vous évitera sans doute quelques catastrophes !

    A +

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 249
    Points : 1 745
    Points
    1 745
    Par défaut
    Je dois ouvrir une transaction, bloquer l'enregistrement pour que personne ne puisse le modifier et/ou le lire, effectuer ma modification, puis valider ou annuler la transaction pour libérer l'enregistrement.
    J'ai répondu un peu vite en effet! Désolé.

    Il n'y a pas à "bloquer l'enregistrement pour que personne ne puisse le modifier et/ou le lire" puisqu' avant la modification, il est dans son état initial, après la modification, il est modifié. Un UPDATE est une opération atomique comme le dit SQLPro.

Discussions similaires

  1. Jointure qui ne renvoie pas tous les enregistrements
    Par rayonx dans le forum Langage SQL
    Réponses: 12
    Dernier message: 19/07/2024, 09h33
  2. [AC-2007] verrouiller les enregistrement
    Par vittirivizzik dans le forum IHM
    Réponses: 5
    Dernier message: 27/02/2012, 11h59
  3. ODBC -- Ne peut pas verrouiller tous les enregistrements.
    Par etoileetoile dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 17/10/2009, 12h12
  4. [AC-2000] 3254 ODBC -- Ne peut pas verrouiller tous les enregistrements.
    Par etoileetoile dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 17/10/2009, 12h11
  5. Verrouiller les enregistrements
    Par Benoit TURQ dans le forum Windows Forms
    Réponses: 3
    Dernier message: 06/10/2008, 21h42

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