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 :

procédure stockée : Verrou / accès concurrent


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2002
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 26
    Par défaut procédure stockée : Verrou / accès concurrent
    Bonjour,

    Je souhaiterais empêcher tout accès concurrent sur l'exécution d'une procédure stockée (comme le ferait un Mutex) : Si un autre appel intervient pendant son exécution je voudrait que l'appel ne lance pas l'exécution tant que le précédent n'est pas exécuté (ou ne lance rien du tout).

    Est-ce quelque chose d'intégré dans Sql Server ?

    merci

    Florent

  2. #2
    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 : 44
    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,

    Il vous suffit pour cela de spécifier le niveau d'isolation de transaction SERIALIZABLE dès le début de votre procédure stockée, et de transactionner explicitement l'ensemble de vos requêtes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    CREATE PROCEDURE maProcedure
    	@_parametres <type_de_donnees>
    AS
    BEGIN
    	SET NOCOUNT ON
    	SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
     
    	BEGIN TRY
    		BEGIN TRANSACTION
     
    		...
     
    		COMMIT TRANSACTION
    	END TRY
    	BEGIN CATCH
    		...
    		ROLLBACK TRANSACTION
    	END CATCH
    END
    Quel est le but de la manœuvre ?

    @++

  3. #3
    Membre averti
    Inscrit en
    Septembre 2002
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 26
    Par défaut
    Le but de la manœuvre est de corriger un dysfonctionnement ... Il semble qu'elle est appelée une deuxième fois avant la fin de l'exécution précédente, et comme elle utilise des tables intermédiaires de calcul ça ne se passe pas bien !

    Merci pour la réponse, j'essaie tout de suite !

  4. #4
    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 : 44
    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
    Il semble qu'elle est appelée une deuxième fois avant la fin de l'exécution précédente
    Dans ce cas il faudrait savoir pourquoi elle s'exécute une seconde fois.
    Est-elle appelée par un job ?

    @++

  5. #5
    Membre averti
    Inscrit en
    Septembre 2002
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 26
    Par défaut
    Elle appelé par un écran utilisateur (bouton), comme il y a plusieurs écrans il peut y avoir des appels concurrents

  6. #6
    Membre Expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Par défaut
    Le but de la manœuvre est de corriger un dysfonctionnement ... Il semble qu'elle est appelée une deuxième fois avant la fin de l'exécution précédente, et comme elle utilise des tables intermédiaires de calcul ça ne se passe pas bien !

    Merci pour la réponse, j'essaie tout de suite !
    Vous pouvez aussi penser à 'isoler' votre traitement en ajoutant une colonne alimentée par un UNIQUEIDENTIFIER propre à votre exécution... ainsi même si elle est appelée une deuxième fois les exécution sont indépendantes.
    Mais peut'être n'est ce pas le but recherché?

Discussions similaires

  1. [SQLServer 2000] Problème accès procédure stockée
    Par LE NEINDRE dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 27/08/2007, 14h21
  2. Réponses: 10
    Dernier message: 25/05/2007, 15h21
  3. Accès à un fichier depuis une procédure stockée
    Par greg75 dans le forum Sybase
    Réponses: 2
    Dernier message: 09/03/2007, 10h02
  4. Réponses: 4
    Dernier message: 29/01/2007, 14h43
  5. Accès non autorisé à l'exécution d'une procédure stockée
    Par celine33 dans le forum Bases de données
    Réponses: 6
    Dernier message: 11/01/2006, 10h27

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