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

ASP.NET Discussion :

Interblocage et LockTable


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 4
    Par défaut Interblocage et LockTable
    Bonjour,

    J'ai un problème d'interblocage lorsque j'utilise la commande sql "Lock Table maTable in exclusive mode".

    En gros mon code c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dim ado as new adodb.connection
     
    Ado.ConnectionString = connectionString ' la chaine de connection à une base de données
     
    ado.beginTrans
    ado.execute "Lock Table maTable1 in exclusivemode"
    ' du code s'exécute 
    ado.commitTrans
    Lorsque deux utilisateurs sont connecté en même temps, le premier obtient le verrou sur la table maTable1, rentre dans le code en section critique. Le deuxième, quant à lui, se trouve bloqué normalement sur le "lock table matable1...".
    Mon soucis, c'est que IIS ne redonne jamais la main au premier processus pour qu'il termine la section critique et libère le verrou grâce au commitTrans.
    Les deux utilisateurs se bloquent mutuellement !


    Je ne suis pas habitué à poster des messages sur un forum, si vous voulez des précisions supplémentaires, n'hésitez pas à les demander.


    Merci par avance.

  2. #2
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Voici de quoi t'orienter dans ta recherche :

    http://support.microsoft.com/kb/q169960/
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 4
    Par défaut Pas ce type d'interblocage
    Bonjour
    Merci pour ta réponse, mais mon problème est quelque peu différent. En fait, il ne s'agit pas d'un interblocage "classique" durant lequel un utilisateur u1 bloque les ressources A puis B pendant que u2 bloque B puis A. Dans ce cas classique, u1 peut obtenir A pendant que u2 obtient B, les deux processus s'interblocant au moment de l'obtention de la ressource suivante...

    Dans mon cas, les deux utilisateurs ne veulent obtenir un verrou que pour une seule ressource (matable1). Le problème est, je pense, un problème d'ordonnancement.
    En effet, lorsque la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ado.execute "Lock Table maTable1 in exclusivemode"
    est exécuté par un utilisateur quelconque, IIS se met en attente de l'obtention de la ressource et aucune autre demande n'est traitée... Si un utilisateur différent avait obtenu cette ressource, IIS ne continue alors pas le traitement du code qui conduit à la libération de la ressource.

    J'ai trouvé une première solution avec l'objet "monitor" qui permet de gérer les verrous directement pas asp.net. Dans ce cas, l'ordonnancement est correctement traité par IIS mais cette solution me pose des problèmes de performance et d'évolutivité : les lock table sont en fait dans des composants com, il me faudrait alors poser les verrous avant les appels de chaque fonction qui contient un lock table.

Discussions similaires

  1. Interblocage et LockTable
    Par tibo372 dans le forum ASP
    Réponses: 2
    Dernier message: 26/02/2008, 09h38
  2. Probleme d'interblocage entre deux Thread
    Par brahimouledriah dans le forum Concurrence et multi-thread
    Réponses: 1
    Dernier message: 08/11/2007, 09h20
  3. [SP][interblocage]code de SP suspect ?
    Par jbat dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 21/09/2006, 11h25
  4. Interblocage -> suppression impossible
    Par echataig dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 26/04/2006, 14h20
  5. compilation interblocage :(
    Par cyrilforever dans le forum C++
    Réponses: 5
    Dernier message: 02/02/2006, 22h51

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