|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |||
|
Membre du Club
![]() Inscription : octobre 2009 Messages : 59 ![]() |
Bonjour tout le monde
Lorsque, sous sql server 2008 (pas R2) je fais: Code :
Citation:
J'ai fait quelques tests avec des SELECT @@TRANCOUNT; et a priori c'est le cas, j'ai placé un select avant le exec, un après et un au début du catch, résultat : 1 avant le exec, 0 dans le catch (???!) et pas de message après le exec (normal) Du coup je veux bien vérifier qu'il il y a une transaction en cours (IF @@TRANCOUNT > 0) mais qu'en est-il des données traitées dans la procédure seront-elles enregistrées ou non ? |
|||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Analyste / Programmeur Inscription : juillet 2006 Messages : 1 307 ![]() |
J'suis justement en formation et on voit les transactions ^^.
Tu mets ton bloc transaction dans ton bloc try. C'est l'inverse, mets ton bloc try dans ton bloc transaction. |
|
|
10
|
|
|
#3 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 959 ![]() |
Non, sa solution est bonne.
mais 1) la proc [dbo].[q_MajESale_fr_Articles] peut elle même faire une transactions. Vois comment sont gérées les transactions imbriquées dans l'article que j'ai écrit : http://sqlpro.developpez.com/cours/s...ns-imbriquees/ 2) dans le CATCH, utilisez la fonction XACT_STATE pour tester l'état de validité transactionnel. A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#4 |
|
Membre Expert
![]() Analyste / Programmeur Inscription : juillet 2006 Messages : 1 307 ![]() |
Au temps pour moi alors.
Pourtant, j'aurais cru que vu que sa transaction est déclaré au sein du bloc try, elle ne serait visible qu'à l'intérieur de ce bloc. La visibilité des objets ne fonctionne pas de cette façon en sql server ? J'avoue avoir extrapolé cela à partir de mes connaissances en programmation. |
|
|
00
|
|
|
#5 |
|
Membre chevronné
![]() ![]() Inscription : juillet 2006 Messages : 1 194 ![]() |
"SET XACT_ABORT ON" peut aider.
|
|
|
00
|
|
|
#6 | |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 959 ![]() |
Citation:
A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() Analyste / Programmeur Inscription : juillet 2006 Messages : 1 307 ![]() |
Merci pour ces éclaircissements.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com