SQL Server XACT_ABORT con exclusión

Tengo un procedimiento almacenado más grande que utiliza varios bloques TRY / CATCH para capturar y registrar errores individuales. También he envuelto una transacción en todo el contenido del procedimiento, para poder revertir todo en caso de que se produzca un error en algún lugar en el camino (para evitar una limpieza desordenada); XACT_ABORT se ha habilitado ya que de lo contrario no revertiría toda la transacción.

Componente clave:
Hay una tabla en mi base de datos que inserta un registro cada vez que se ejecuta este procedimiento con los resultados de las operaciones y detalles sobre lo que salió mal.

Está sucediendo algo curioso: en realidad, cuando finalmente descubrí lo que estaba mal, era bastante obvio ... la declaración de inserción en mi tabla de registro también se revierte, por lo tanto, si no me estoy quedando sin SSMS, No podré ver que esto incluso se ejecutó, ya que la reversión elimina todos los trances de actividad.

Pregunta:
¿Sería posible revertir toda la transacción con la excepción de esta declaración de inserción única? Todavía me gustaría conservar el mensaje de error que compilo durante la ejecución del procedimiento almacenado.

¡Muchas gracias!

~ Eli

Actualización 6/28
Aquí hay una muestra de código de lo que estoy viendo. La diferencia clave entre esto y las muestras planteadas por @Alex y @gameiswar es que, en mi caso, los bloques try / catch están todos anidados dentro de la transacción única. El propósito de esto es tener múltiples capturas (para las múltiples tablas), aunque podríamos revertir todo el desastre incluso si falla la última actualización.

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

Respuestas a la pregunta(3)

Su respuesta a la pregunta