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 :

Gestion des accés concurentiels


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Par défaut Gestion des accés concurentiels
    Bonsoir,

    Voilà, je suis entrain de tester une BD SQL SERVER et dans les procedures stockées devant faire des insert,update et delete les commandes de transactions (BEGIN TRANS, ROLLBACK, COMMIT) ne sont pas implémenter. Ayant fait la remarque au developpeur, celui-ci m'a répondu que ces commandes ne sont pas indispensable lorsque les mise à jours ne concerne qu'une seule table. Effectivement l'atomicité ne concerne que les parties (tables) d'un tout qui doit-être cohérent. Mais dés lors qu'il ne s'agit que d'une seule table .....??? il serait obligatoire d'implémenter manuellement ces commandes afin de gerer les conflits d'accés.

    Dans de mes developpements j'ai l'habitude d'implementer manuellement ces commandes mais d'aprés les dires de ce developpeur, je supposerais donc qu'il y des transactions implicite et par défaut qui démarrent n'es-ce pas ?

    Serait-il possible d'avoir une confirmation ?

    Je vous remerçie

  2. #2
    Membre expérimenté
    Inscrit en
    Février 2009
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 224
    Par défaut
    Bonjour,
    Tout d'abord Oui SQL Server fonctionne sous le principe des transactions implicites. Donc chaque insctruction INSERT, UPDATE et DELETE s'exécutent dans sa propre transaction. L'objectif et l'interet de cette méthode est de limieter le temps de verouillage des enregistrement et donc de minimiser les risques d'attentes et d'interblocage. Essayez donc de conserver ce mode aussi souvent que nécessaire.
    Par contre, peut être avez des ensembles indivisible d'opérations (par exemple 2 updates, ou un 1 insert et 1 delete...) dans ce cas et uniquement dans ce cas vous devez basculer en transaction explicite (BEGIN TRAN, COMMIT TRAN ou ROLLBACK TRAN).

  3. #3
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Sous SQL Server, toute instruction SELECT, INSERT, UPDATE ou DELETE est effectivement une transaction implicite, et il n'est donc pas nécessaire de les encadrer par BEGIN TRAN ... COMMIT TRAN.
    Si en revanche vous avez besoin d'effectuer une mise à jour de données (sur une ou plusieurs tables), vous pouvez encadrer le lot d'instructions par BEGIN TRAN ... COMMIT TRAN (transaction explicite)
    Par exemple si vous avez besoin de supprimer les lignes d'une table puis celle d'une autre mais que cela doit se faire en "tout ou rien", vous êtes obligé d'en faire une transaction explicite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    BEGIN TRAN SupprimeFactures
     
    DELETE FROM TbLigneFacture 
    WHERE ...
     
    DELETE FROM TbFacture
    WHERE ...
     
    COMMIT TRAN SupprimeFactures
    Gardez à l'esprit que vos transaction explicites doivent être les plus courtes possible et ne les utilisez que lorsque cela s'avère vraiment nécessaire

    @++

  4. #4
    Membre éprouvé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Par défaut
    Bonjour,

    Citation Envoyé par elsuket
    Si en revanche vous avez besoin d'effectuer une mise à jour de données (sur une ou plusieurs tables), vous pouvez encadrer le lot d'instructions par BEGIN TRAN ... COMMIT TRAN (transaction explicite)
    valeur
    En effet même pour une seule table j'optais pour une transaction explicite mais bon ... comme SQL SERVER le fait implicitement donc pour une seule table c'est pas indispensable d'encadrer par BEGIN TRAN ... COMMIT TRAN.

    Ok ca me suffit, c'est ce que je souhaitais savoir

    Merci jero44 et elsuket

  5. #5
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    pour une seule table c'est pas indispensable d'encadrer par BEGIN TRAN ... COMMIT TRAN.
    Je dirai même que c'est déconseillé

    @++

  6. #6
    Membre éprouvé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Par défaut
    Ok merci encore

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

Discussions similaires

  1. [WD20] Problème de gestion des accès concurentiel en HFSQL Classic
    Par lololebricoleur dans le forum HyperFileSQL
    Réponses: 3
    Dernier message: 24/06/2015, 09h10
  2. Réponses: 12
    Dernier message: 06/10/2006, 13h35
  3. Gestion des accès concurrents à une table
    Par kodo dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 20/06/2006, 14h05
  4. [Sécurité]Gestion des accès dans plusieurs bases
    Par vincentj dans le forum Débuter
    Réponses: 1
    Dernier message: 05/01/2005, 14h19
  5. [Struts] Droits d'un user et gestion des accès aux pages
    Par PeteMitchell dans le forum Struts 1
    Réponses: 4
    Dernier message: 14/04/2004, 11h30

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