Vraag : Xact_state of @@ TranCount om de terugschroeven van prijzen van de nesttransactie te behandelen

Hallo hebben allen,

I een Opslag proc die een recursieve opslag proc roept die beurtelings een paar anderen zou kunnen roepen. Allen werken verschillende lijsten enz. in het systeem en al begin met een transactie bij. Ik heb een blok van de pogingsvangst rond de code en broodje terug op fouten.  Het insect ik kreeg was….het verzoek van de TRANSACTIE van het TERUGSCHROEVEN VAN PRIJZEN

The heeft geen het corresponderen met TRANSACTION.

SO BEGINNEN na het lezen van een beetje meer op transacties ik zie nu dat als het terugschroeven van prijzen een genestelde transactie wordt uitgenodigd het terug naar de andere Transactie rolt. Wanneer ik de fout vang die ik heb geprobeerd om achter het te rollen en de fout op de roepende opslag te werpen proc. De roepende procedure probeert dan een broodjesrug maar er zijn niets. Dit schijn ik te begrijpen en het maakt nu sense.

However (de vraag alvorens ik u allen) droeg ik bekeek manieren om dit te behandelen en weet niet of aan gebruik Xact_state of @@trancount om te beslissen of.

So in elke Vangst of niet te annuleren ik één of andere code als ging zetten.

start stor proc
… delcare som het materiaal…
BEGIN TRY
BEGINT met TRANSACTION
… doet wat stuff
BEGAAT TRANS
END TRY
BEGIN CATCH
        -- rol slechts terug als dit buitentranaction
ALS is (XACT_STATE () = -1) EN (@@TranCount = 1)
het TERUGSCHROEVEN VAN PRIJZEN TRANS

         -- bouw een UITGEZOCHTE fout string
@errorMsg = OBJECT_NAME (@@PROCID) + „: „+ gegoten (XACT_STATE () zoals varchar (3))  +“ --  @@TranCount =“ + gegoten (@@TranCount zoals varchar (3))      
          --werp de behoefte/>
RAISERROR (@errorMsg, @errorSev, @errorState)/> EIND
… proc
Do I XACT_STATE of gebruik enkel @@Trancount.  Ook merkte ik in debugger in SQL 2008 op dat als ik een horloge op de @@TranCountvariabele zette, de minuut ik de opslag proc het verhoogd ga en niet toen ik excuted de verklaring… inging Begin met Transactie. Het zelfde toen ik de broodjesrug… riep het niet decrement, slechts wanneer verlatend de opslag proc… om het even welke ideeën of is dit enkel debugger of SQL Server wetend dat het een transactie heeft hoe dan ook te beginnen??

thanks M

Antwoord : Xact_state of @@ TranCount om de terugschroeven van prijzen van de nesttransactie te behandelen

Andere oplossingen  
 
programming4us programming4us