OVH Cloud OVH Cloud

Pb de blocages SQLServer 2000

3 réponses
Avatar
Xavier
J'utilise une base de données sur laquelles viennent se connecter un gd nb
d'utilisateur qui doivent bloquer des données en lecture et écriture.

Pour cela, j'utilise la syntaxe
"SELECT ___ FROM T1,T2,T3 WITH (READPAST UPDLOCK) WHERE ___"

Pour le premier de ces enreg, j'ouvre une transaction puis je lance :
"SELECT ___ FROM T1,T2,T3 WITH (UPDLOCK) WHERE ___"

Lorsque le traitement de cet enreg est terminé, je ferme la transaction et
je relance.

Or, il arrive de plus en plus régulièrement des erreur de blocage SQL Server
sur la deuxième requête.

J'en viens à me poser des questions sur la validité de mon code.

Merci de vos suggestions.

3 réponses

Avatar
Fred BROUARD
Bonjour,

Xavier a écrit:
J'utilise une base de données sur laquelles viennent se connecter un gd nb
d'utilisateur qui doivent bloquer des données en lecture et écriture.

Pour cela, j'utilise la syntaxe
"SELECT ___ FROM T1,T2,T3 WITH (READPAST UPDLOCK) WHERE ___"

Pour le premier de ces enreg, j'ouvre une transaction puis je lance :
"SELECT ___ FROM T1,T2,T3 WITH (UPDLOCK) WHERE ___"

Lorsque le traitement de cet enreg est terminé, je ferme la transaction et
je relance.

Or, il arrive de plus en plus régulièrement des erreur de blocage SQL Server
sur la deuxième requête.

J'en viens à me poser des questions sur la validité de mon code.



effectivement... Vous utiliser un verrou d'UPDATE pour faire un SELECT...

A moins de bien avoir fait une étude de la concurrence de traitement, vous
devriez laisser SQL Server poser lui même les verrous plutôt que de lui imposer
telle ou telle manière de faire.
Le mieux est de gérer une transaction avec un niveau d'isolation adapté.

Forcer des verrous sans une étude préalable suivi d'un audit en production est
le meilleur moyen de pourrir l'accès à une base.

A +


Merci de vos suggestions.



--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Avatar
Xavier
Comment puis-je faire mon blocage afin que les enreg "bloqués" ne doient
visibles que par des requêtes "WITH NOLOCK" en SELECT ?

Merci.

"Fred BROUARD" a écrit :

Bonjour,

Xavier a écrit:
> J'utilise une base de données sur laquelles viennent se connecter un gd nb
> d'utilisateur qui doivent bloquer des données en lecture et écriture.
>
> Pour cela, j'utilise la syntaxe
> "SELECT ___ FROM T1,T2,T3 WITH (READPAST UPDLOCK) WHERE ___"
>
> Pour le premier de ces enreg, j'ouvre une transaction puis je lance :
> "SELECT ___ FROM T1,T2,T3 WITH (UPDLOCK) WHERE ___"
>
> Lorsque le traitement de cet enreg est terminé, je ferme la transaction et
> je relance.
>
> Or, il arrive de plus en plus régulièrement des erreur de blocage SQL Server
> sur la deuxième requête.
>
> J'en viens à me poser des questions sur la validité de mon code.

effectivement... Vous utiliser un verrou d'UPDATE pour faire un SELECT...

A moins de bien avoir fait une étude de la concurrence de traitement, vous
devriez laisser SQL Server poser lui même les verrous plutôt que de lui imposer
telle ou telle manière de faire.
Le mieux est de gérer une transaction avec un niveau d'isolation adapté.

Forcer des verrous sans une étude préalable suivi d'un audit en production est
le meilleur moyen de pourrir l'accès à une base.

A +

>
> Merci de vos suggestions.

--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************




Avatar
Fred BROUARD
Rien...

SQL le gère tout seul et heureusement !

A +

Xavier a écrit:
Comment puis-je faire mon blocage afin que les enreg "bloqués" ne doient
visibles que par des requêtes "WITH NOLOCK" en SELECT ?

Merci.

"Fred BROUARD" a écrit :


Bonjour,

Xavier a écrit:

J'utilise une base de données sur laquelles viennent se connecter un gd nb
d'utilisateur qui doivent bloquer des données en lecture et écriture.

Pour cela, j'utilise la syntaxe
"SELECT ___ FROM T1,T2,T3 WITH (READPAST UPDLOCK) WHERE ___"

Pour le premier de ces enreg, j'ouvre une transaction puis je lance :
"SELECT ___ FROM T1,T2,T3 WITH (UPDLOCK) WHERE ___"

Lorsque le traitement de cet enreg est terminé, je ferme la transaction et
je relance.

Or, il arrive de plus en plus régulièrement des erreur de blocage SQL Server
sur la deuxième requête.

J'en viens à me poser des questions sur la validité de mon code.



effectivement... Vous utiliser un verrou d'UPDATE pour faire un SELECT...

A moins de bien avoir fait une étude de la concurrence de traitement, vous
devriez laisser SQL Server poser lui même les verrous plutôt que de lui imposer
telle ou telle manière de faire.
Le mieux est de gérer une transaction avec un niveau d'isolation adapté.

Forcer des verrous sans une étude préalable suivi d'un audit en production est
le meilleur moyen de pourrir l'accès à une base.

A +


Merci de vos suggestions.



--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************







--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************