Un problème qui me déprime

cs_Casi Messages postés 9 Date d'inscription jeudi 16 mai 2002 Statut Membre Dernière intervention 8 janvier 2009 - 22 févr. 2007 à 00:08
 LioGIS - 31 janv. 2022 à 15:01
Bonjour,

Je suis confronté a un problème depuis plusieurs mois, en effet aléatoirement mes visiteurs peuvent recevoir ces messages :

Microsoft OLE DB Provider for ODBC Drivers
[Microsoft][ODBC SQL Server Driver][SQL Server]La transaction (ID de processus 60) a été bloquée sur les ressources verrou par un autre processus et a été choisie comme victime. Réexécutez la transaction.

Microsoft OLE DB Provider for ODBC Drivers
[Microsoft][ODBC SQL Server Driver][SQL Server]La transaction (ID de processus 69) a été bloquée sur les ressources verrou | tampon de communication par un autre processus et a été choisie comme victime. Réexécutez la transaction.

Ca tourne sous SQL Serveur 2005 Entreprise edition
Avant de poster :
-> J'ai reinstallé completement windows
-> J'ai reinstallé completement SQL serveur

Je me rends compte que ca bloque TOUJOURS sur la même table (TABLE Account) et sur des requêtes différentes (Select, Update...)

Si quelqu'un a une idée elle est la bienvenue!!!!!!

Trés cordialement,
Yannick
 

2 réponses

cs_skweeky Messages postés 259 Date d'inscription mercredi 3 mai 2006 Statut Membre Dernière intervention 11 janvier 2010 8
6 mars 2007 à 23:45
Bonjour,

Le problème qui est rémonté est un deadlock ou un interblocage en français.

C'est 2 processus qui se bloquent de manière permantes, et SQL Server le détecte et tue l'une des tâches.
C'est dans 99,9% un problème de code SQL à modifier, qui provoque ce genre de problèmes.

Sinon les solutions qui marchent :
1. Réexecuter la requête qui s'est faite tué (Ca a 90 % de chances de marcher, Si on retente encore c'est du 99%, etc). On peut faire une bouche avec un timer à prévoir au niveau de l'execution des requêtes.
2. Indexer correctement ses tables. Ca peut parraître hors sujet mais le manque d'index peut provoquer celà.
3. Ordonner l'accès aux tables dans ses requêtes. Quand celà est possible, par ordre alphabétique par exemple et s'y tenir.

Pour le NOLOCK, il est à fuir comme de la peste.
1. Il n'évitera pas tous les problèmes
2. Il risque d'ajouter des erreurs de lecture faussée quasiment indéctectables.

Cordialement
------------
Christian Robert - Winwise
http://blogs.developpeur.org/christian
MVP SQL Server
1
Rejoignez-nous