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 :

[SQL2K8] Empêcher l'execution simultanée de procédures stockées


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Monstros Velu
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 619
    Par défaut [SQL2K8] Empêcher l'execution simultanée de procédures stockées
    Bonjour,

    je cherche une méthode fiable, propre et de préférence simple à mettre en oeuvre, pour empêcher l'execution multiple et simultanée d'une procédure stockée

    Des idées ?

    Merci d'avance !

  2. #2
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Bonjour,

    Quel est le but de la manoeuvre ?

    ++

  3. #3
    Membre éclairé Avatar de Monstros Velu
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 619
    Par défaut
    J'ai un service qui tourne à intervale régulier, et un bouton dans un interface utilisateur, qui lancent la même action. Je veux donc éviter que tout ceci interfère (traitement utilisateur en même temps que le service, traitement du service alors que l'utilisateur a déjà lancé, traitement du service alors que le traitement précédant n'est pas terminé)

  4. #4
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2003
    Messages : 733
    Billets dans le blog
    8
    Par défaut
    1 – Tu crée une table par exemple Reservations (sous entendu, réservations pour l’exécution des procédures)
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TABLE Reservations ( 
    ProcName  sysname not null CONSTRAINT PK_Reservations PRIMARY key CLUSTERED, 
    Reserved   bit   -- Ligne réservée 0 (False) ie procédure non réservé ou 1 (True) ie procédure Réservée. 
    ); 
    GO
    2 – Tu crée, une entrée dans la table Réservation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO Reservations
    (ProcName ,  Reserved) 
    Values 
    ('MaProcedure', 0);  -- à l'initialisation  la procédure n'est pas réservée (Reserved=0) 
    GO
    L’étape 2 ci-dessus est une initialisation effectuée une seule fois, lors de l’installation par exemple.

    3 – Pour le reste, il faut utiliser le design patern du Mutex ou du Semaphore à un seul jeton. La mise en ouvre des Sections Critiques, (ie, dans ton cas, la prise de jeton pour exécuter la procédure), peut être réalisée par le truchement des niveaux d’isolation des transactions. Le niveau d’isolation REPEATABLE READ appliquée lors de la lecture ou l’écriture de l’enregistrement correspondant à ligne ‘MaProcedure’ dans la table Resevations, est le mieux approprié et permet de manière sûre et fiable l’attribution du jeton dans un contexte multi-sessions, multi-utilisateurs.

    Le Sémaphore se déroule en 3 opération :
    Init Initialisation du sémaphore. Cette opération est effectuée une seule fois.
    P Mise en attente jusqu'à ce qu'une ressource soit disponible
    V est l'opération inverse; elle rend simplement une ressource disponible à nouveau après que le processus a terminé de l'utiliser.

    Remarque : Les termes P et V proviennent du néerlandais Proberen et Verhogen ce qui signifie tester et incrémenter (en français "Puis-je?" et "Vas-y!").

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/04/2008, 15h23
  2. execution asynchrone de procédure stockée
    Par Pol63 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 16/08/2007, 23h17
  3. [DTS] Execution dans un procédure stockée
    Par benratti dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 22/12/2006, 16h19
  4. Réponses: 3
    Dernier message: 01/12/2006, 12h58
  5. Execution d'un procédure stockée à partir de Delphi
    Par Jephte dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 01/09/2005, 15h25

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