Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1524 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Comment savoir si une table est lockée ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comment savoir si une table est lockée ?

n°1754076
FabienDev
Posté le 01-07-2008 à 16:14:29  profilanswer
 

Bonjour tous le monde,
 
J'ai besoin de modifier la structure d'une table par le biais d'un dev en VB et pour cela je dois savoir si elle est en cours d'utilisation pour éviter les conflits.  
Comment puis-je récupérer cette information ? Après de nombreuses recherches, je sais que ce n'est pas dans la table syslocks de la base master.

mood
Publicité
Posté le 01-07-2008 à 16:14:29  profilanswer
 

n°1754085
MagicBuzz
Posté le 01-07-2008 à 16:32:17  profilanswer
 

Ben c'est simple...
 
Tu fais ton Alter.
Il va demander un lock exclusif sur la table.
Tous les locks existants vont donc rester et partir petit à petit.
Et aucun nouveau lock ne sera accepté, il seront mis en file d'attente.
Une fois tous les locks partis, le alter va se faire.
Le lock de l'alter va laisser sa place à tous les nouveaux qui sont en file d'attente.
 
En gros, mise à part figer les utilisateurs quelques secondes/minutes (selon la durée du traîtement Alter, et si une personne est partie boire un café en laissant un lock ouvert sur la table), ça ne dois pas avoir d'impact sur l'exploitation...

n°1754087
MagicBuzz
Posté le 01-07-2008 à 16:34:18  profilanswer
 

Et de toute façon c'est pas parceque "là maintenant tout de suite, y'a pas de lock" que "dans la µs suivante, y'a pas 100000 locks sur la table"
 
Donc ça sert à rien d'aller voir si y'a des locks. Tant que t'as pas obtenu le tiens, tu ne seras jamais sûr de rien.
 
Sinon, tu peux locker la table avec un SELECT juste avant :
 
BEGIN TRAN
SELECT NULL FROM [matable] WITH XLOCKX
 
--- tant que tu commit pas, la table sera lockée entièrement en mode exclusif : seul toi à le droit d'y accéder
 
cependant, un ALTER n'étant pas transactionnel, je sais pas ce que ça donne de tenter un alter au milieu d'une transaction. à mon avis ça va te claquer à la gueule et ça me semble logique.


Message édité par MagicBuzz le 01-07-2008 à 16:35:31
n°1754106
FabienDev
Posté le 01-07-2008 à 16:49:53  profilanswer
 

OK merci MagicBuzz. Je vais tester ta solution.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Comment savoir si une table est lockée ?

 

Sujets relatifs
[VBA] Déplacer données Tableincrémenter un champs dans une table via un bouton
supprimer un élément de ma table de string[MYSQL] Limite d'une table
[SQL] requéte multi tablecree une relation entre deux table access en code vb6
[ORACLE - TRIGGER]exception TABLE IS MUTATINGcrees plusieur table access en vb6
[RESOLU] savoir si une cellule appartient a une zoneComparer lignes d'un fichier avec enregistrements table
Plus de sujets relatifs à : Comment savoir si une table est lockée ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR