Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Question d'un désespéré

3 réponses
Avatar
Vincent
Bonjour à tous ma question va être assez simple.

Est-il possible que suite à une erreur 1205 que je catch et j'annule la
transaction, cette transaction s'exécute quand même sur sql server ?

Merci d'avance

3 réponses

Avatar
Rudi Bruchez
Vincent a écrit:

Bonjour à tous ma question va être assez simple.

Est-il possible que suite à une erreur 1205 que je catch et j'annule la
transaction, cette transaction s'exécute quand même sur sql server ?

Merci d'avance



Salut,

Que veux-tu dire ? Si tu reçois une erreur 1205, tu es victime d'une
situation de deadlock, donc ta transaction est annulée, tu n'as pas besoin
de faire un rollback toi-même. Quand la transaction est rollbackée, elle
est annulée pour de bon. Ce que tu peux faire, c'est recommencer depuis le
début.
Ceci dit, si tu es confronté régulièrement à ce problème, essaie de revoir
ton code. Essaie de ne pas faire de trop longues transactions explicites,
et de ne pas faire des updates sur plusieurs tables dans des séquences
opposées.

Il y a qq infos (en anglais), ici :
http://www.sql-server-performance.com/deadlocks.asp

--
Rudi Bruchez, MCDBA
http://www.babaluga.com/
Avatar
Vincent
Je pensais comme toi mais ce qui me perturbe c'est que dans la doc de
SQLserver, il est dit que la transaction est annulée mais un peu plus loin on
te dit que dans certains cas, on te recommande fortement de l'annuler toi
même quand même...

doc SQL serveur:
"Il a beau sembler inutile d'annuler un traitement par lots après avoir reçu
un message de blocage 1205, cela est néanmoins nécessaire parce que le
serveur n'arrête pas toujours le traitement par lots dans une situation de
blocage"

"Rudi Bruchez" <"rudi#nospam#[at]babaluga" a écrit :

Vincent a écrit:

> Bonjour à tous ma question va être assez simple.
>
> Est-il possible que suite à une erreur 1205 que je catch et j'annule la
> transaction, cette transaction s'exécute quand même sur sql server ?
>
> Merci d'avance

Salut,

Que veux-tu dire ? Si tu reçois une erreur 1205, tu es victime d'une
situation de deadlock, donc ta transaction est annulée, tu n'as pas besoin
de faire un rollback toi-même. Quand la transaction est rollbackée, elle
est annulée pour de bon. Ce que tu peux faire, c'est recommencer depuis le
début.
Ceci dit, si tu es confronté régulièrement à ce problème, essaie de revoir
ton code. Essaie de ne pas faire de trop longues transactions explicites,
et de ne pas faire des updates sur plusieurs tables dans des séquences
opposées.

Il y a qq infos (en anglais), ici :
http://www.sql-server-performance.com/deadlocks.asp

--
Rudi Bruchez, MCDBA
http://www.babaluga.com/



Avatar
Philippe T [MS]
Bonjour,

Il peut ne pas l'annuler si le blocage persiste. Il est toujours préférable
de faire explicitement les choses plutôt que de laisser le moteur le faire
lui même.

Phil.
________________________________________________________
Philippe TROTIN
Microsoft Services France http://www.microsoft.com/france
"Vincent" wrote in message
news:
Je pensais comme toi mais ce qui me perturbe c'est que dans la doc de
SQLserver, il est dit que la transaction est annulée mais un peu plus loin
on
te dit que dans certains cas, on te recommande fortement de l'annuler toi
même quand même...

doc SQL serveur:
"Il a beau sembler inutile d'annuler un traitement par lots après avoir
reçu
un message de blocage 1205, cela est néanmoins nécessaire parce que le
serveur n'arrête pas toujours le traitement par lots dans une situation de
blocage"

"Rudi Bruchez" <"rudi#nospam#[at]babaluga" a écrit :

Vincent a écrit:

> Bonjour à tous ma question va être assez simple.
>
> Est-il possible que suite à une erreur 1205 que je catch et j'annule la
> transaction, cette transaction s'exécute quand même sur sql server ?
>
> Merci d'avance

Salut,

Que veux-tu dire ? Si tu reçois une erreur 1205, tu es victime d'une
situation de deadlock, donc ta transaction est annulée, tu n'as pas
besoin
de faire un rollback toi-même. Quand la transaction est rollbackée, elle
est annulée pour de bon. Ce que tu peux faire, c'est recommencer depuis
le
début.
Ceci dit, si tu es confronté régulièrement à ce problème, essaie de
revoir
ton code. Essaie de ne pas faire de trop longues transactions explicites,
et de ne pas faire des updates sur plusieurs tables dans des séquences
opposées.

Il y a qq infos (en anglais), ici :
http://www.sql-server-performance.com/deadlocks.asp

--
Rudi Bruchez, MCDBA
http://www.babaluga.com/