Pergunta : Xact_state ou @@ TranCount para segurar rollbacks da transação do ninho

Olá! todos,

I têm um proc da loja que chame um proc recursive da loja que por sua vez possa chamar alguns outro. Todos estão atualizando as tabelas diferentes etc. em sistema e em todo o começo com uma transação. Eu tenho um bloco do prendedor da tentativa em torno do código e rolo para trás em erros.  O erro que eu começ era….o pedido da TRANSAÇÃO do ROLLBACK do

The não tem nenhuma correspondência PARA COMEÇAR TRANSACTION.

SO depois que lendo um pouco mais em transações que eu ver agora que se um rollback é convidado uma transação aninhada rola de volta à outra transação. Quando eu travo o erro mim tentar rolá-lo para trás e jogar sobre o erro ao proc de chamada da loja. O procedimento de chamada tenta então um rolo para trás mas não há nenhuns. Isto eu pareço compreender e faz agora sense.

However (a pergunta antes que eu o fure todo) que eu olhava maneiras de segurar isto e não sei se usar Xact_state ou @@trancount para decidir se rolar para trás ou not.

So em cada prendedor eu estava indo põr algum código como. o
BEGIN TRY
do material do som do delcare do proc
do stor do

start…… COMEÇA TRANSACTION
… faz algum stuff
COMETE TRANS
END TRY
BEGIN CATCH
        -- rolar somente para trás se este é o tranaction
SE (XACT_STATE () = -1) E (@@TranCount = 1) ROLLBACK TRANS

do
         -- construir um @errorMsg do string
do erro = um OBJECT_NAME SELETOS (@@PROCID) + “: “+ moldado (XACT_STATE () como varchar (3))  +” --  o @@TranCount =” + moldou (@@TranCount como varchar (3))      
          --jogar o proc

Do que da loja da extremidade do
do PRENDEDOR da EXTREMIDADE do
do on
RAISERROR do erro (@errorMsg, @errorSev, @errorState)… eu preciso o XACT_STATE ou apenas uso o @@Trancount.  Igualmente eu observei no depurador de programas em SQL 2008 que se eu põr um relógio sobre a variável do @@TranCount, o minuto eu incorporei o proc que da loja vai incrementado e não quando eu excuted a indicação… Começar a transação. O mesmos quando eu lhe chamei o rolo para trás… não decresceram, simplesmente ao deixar ao proc da loja… nenhuma idéias nem são este apenas o depurador de programas ou usuário do SQL que sabe que têm uma transação a começar de qualquer maneira??

thanks M
class= do

Resposta : Xact_state ou @@ TranCount para segurar rollbacks da transação do ninho

Outras soluções  
 
programming4us programming4us