OVH Cloud OVH Cloud

dead lock sur un serveur Sql

3 réponses
Avatar
abraham
Bonjour,

J'ai logiciel ( pas de source ) , qui fait que des "select" sur une base
SqlServeur,
bizarrement ,lorsque le 'Select' plusieurs lignes , des verrous sont placés
sur la base ( ??? ) .
Puis le Serveur retourne des "dead lock" pour les autres clients....

N'y a t il pas un moyen , d'éviter ce blocage , en faisant des manipes sur
le serveur...

Par exemple , limite le nombre de ligne d'un 'select' ou autre chose ...

Merci d'avance

3 réponses

Avatar
Fred BROUARD
abraham a écrit:
Bonjour,

J'ai logiciel ( pas de source ) , qui fait que des "select" sur une base
SqlServeur,
bizarrement ,lorsque le 'Select' plusieurs lignes , des verrous sont placés
sur la base ( ??? ) .



C'est un comportement normal


Puis le Serveur retourne des "dead lock" pour les autres clients....



C'est souvent du à une mauvaise écriture des transactions.
les transactions sont -elles faites dans du code client ou dans des procédures
stockées ?


N'y a t il pas un moyen , d'éviter ce blocage , en faisant des manipes sur
le serveur...



Non, mais en récrivant les transactions correctement :
1) utiliser les différentes tables toujours dans le même sens
2) faire des transactions les plus courtes possible (par exemple unqiuement des
proc stok)
3) piloter un niveau d'isolation des transaction en adéquation avec l'aspect
fonctionnel du code
4) éventuellement, mais avec risque, implémenter une lecture sale


Par exemple , limite le nombre de ligne d'un 'select' ou autre chose ...

Merci d'avance






A +
--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
Avatar
bruno reiter [MVP]
Il doit y avoir un niveau de transaction repeteable read ou serializable qui
fait que les locks en lecture sont gardés, puis les selects se "dead lock"
entre eux par la suite.

Il faut donc modifier le niveau d'isolation

set transcation isolation level

br

"abraham" wrote in message
news:
Bonjour,

J'ai logiciel ( pas de source ) , qui fait que des "select" sur une base
SqlServeur,
bizarrement ,lorsque le 'Select' plusieurs lignes , des verrous sont


placés
sur la base ( ??? ) .
Puis le Serveur retourne des "dead lock" pour les autres clients....

N'y a t il pas un moyen , d'éviter ce blocage , en faisant des manipes sur
le serveur...

Par exemple , limite le nombre de ligne d'un 'select' ou autre chose ...

Merci d'avance




Avatar
Med Bouchenafa
Il peut être plus de la responsablité des auteurs de ce logiciel de corriger
le problème
SQL Server doit fonctionner normalement quelque soit le nombre de lignes
retournées et d'accès concurrents
Utilise le profiler pour regarder effectivement, comme te le suggère Bruno,
le niveau d'isolation utilisée par ce logiciel
C'est un bon début de diagnostics mais dans l'ensemble tu ne pourras que
constater les faits.

--
Bien cordialement
Med Bouchenafa

"abraham" a écrit dans le message de news:

Bonjour,

J'ai logiciel ( pas de source ) , qui fait que des "select" sur une base
SqlServeur,
bizarrement ,lorsque le 'Select' plusieurs lignes , des verrous sont
placés sur la base ( ??? ) .
Puis le Serveur retourne des "dead lock" pour les autres clients....

N'y a t il pas un moyen , d'éviter ce blocage , en faisant des manipes sur
le serveur...

Par exemple , limite le nombre de ligne d'un 'select' ou autre chose ...

Merci d'avance