SQL Server XACT_ABORT com exclusão

Eu tenho um procedimento armazenado maior que utiliza vários blocos TRY / CATCH para capturar e registrar erros individuais. Também envolvi uma transação em todo o conteúdo do procedimento, para poder reverter a coisa toda no caso de um erro gerado em algum lugar ao longo do caminho (a fim de evitar muita limpeza bagunçada); XACT_ABORT foi ativado, pois caso contrário não reverteria a transação inteira.

Componente chave:
Há uma tabela no meu banco de dados que obtém um registro inserido toda vez que esse procedimento é executado com os resultados das operações e detalhes sobre o que deu errado.

O engraçado está acontecendo - na verdade, quando eu finalmente descobri o que estava errado, era bastante óbvio ... a instrução de inserção na minha tabela de log também está sendo revertida, portanto, se eu não estiver executando o SSMS, Não poderei ver que isso foi executado, pois a reversão remove todos os transes de atividade.

Pergunta, questão:
Seria possível reverter toda a transação, com exceção dessa instrução de inserção única? Eu ainda gostaria de preservar a mensagem de erro que compilo durante a execução do procedimento armazenado.

Muito obrigado!

~ Eli

Atualização 6/28
Aqui está um exemplo de código do que estou vendo. A principal diferença entre isso e os exemplos apresentados por @Alex e @gameiswar é que, no meu caso, os blocos try / catch estão todos aninhados dentro da transação única. O objetivo disso é ter várias capturas (para várias tabelas), embora desejemos reverter toda a bagunça, mesmo que a última atualização falhe.

SET XACT_ABORT ON;  
BEGIN TRANSACTION  
    DECLARE @message AS VARCHAR(MAX) = '';  

    -- TABLE 1
    BEGIN TRY
        UPDATE TABLE xx 
        SET yy = zz
    END TRY
    BEGIN CATCH
        SET @message = 'TABLE 1 '+ ERROR_MESSAGE();

        INSERT INTO LOGTABLE
        SELECT 
            GETDATE(),
            @message
        RETURN;
    END CATCH

    -- TABLE 2
    BEGIN TRY
        UPDATE TABLE sss 
        SET tt = xyz
    END TRY
    BEGIN CATCH
        SET @message = 'TABLE 2 '+ ERROR_MESSAGE();

        INSERT INTO LOGTABLE
        SELECT 
            GETDATE(),
            @message
        RETURN;
    END CATCH
COMMIT TRANSACTION

questionAnswers(3)

yourAnswerToTheQuestion