Bonjour,
Dans un programme C#, j'ai tenté de faire des transactions imbriquées comme je le faisait en 1999 avec VBScript et le connecteur OLEDB pour SQL Server 7.0
Seul hic, j'ai une erreur comme quoi c'est pas supporté par l'objet.
Qu'à cela ne tienne, je tente de le faire "à la main" en SQL.
Voici l'étendue des mes connaissances à propos des transactions, telles que je les ai apprises.
Il me semble qu'avec SQL Server 7 ou 2000, ça marchait... A moins que je ne confonde avec Oracle (????) J'avoue que j'ai de plus en plus de doutes.
=> Bref, à la fin du script, on n'a que "valeur a" dans la base.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
Seul hic, SQL Server n'a pas l'air de l'entendre de cette oreille :
Voici ce que j'ai tenté de faire, dans Entreprise Manager :
Ça plante sur le premier rollback. Pourquoi ?
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
J'ai donc tenté, selon les conseils de Bluedeep :Impossible de restaurer b. Ni transaction ni point d'enregistrement de ce nom n'a été trouvé.
Ça passe, mais la transaction est jugée "non terminée". Aussi, je ne vois pas ce que vient faire un savepoint au milieu...
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
Ça passe, et cette fois la transaction est bien terminée.
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
Sauf que je vois pas comment je pourrais générer programmatiquement ce double commit (et surtout, je vois pas à quoi il sert !)
D'autaut que si j'en met un 3°, ça plante !
Bref, quelqu'un peut me donner la syntaxe qui marche pour imbriquer des transactions dans SQL Server ?
J'utilise la 2008 R2 Express

 

 
		
		 
        

 
			
			

 
 
 
			 
   
 


 Problème avec les transactions imbriquées
 Problème avec les transactions imbriquées
				 Répondre avec citation
  Répondre avec citation

 
						
 
						
 
			
Partager