• XACT_ABORT may work, but I would recommend you use TRY/CATCH instead for managing exceptions and transactions.

    BEGIN TRY;

    BEGIN TRAN;

    Exec StoredProc1; -- this stored proc perform insert

    Exec StoredProc2; -- this stored proc perform insert.Update

    COMMIT;

    END TRY

    BEGIN CATCH

    IF XACT_STATE() != 0

    ROLLBACK TRAN;

    DECLARE @err_str VARCHAR(2048),

    @err_sev INT,

    @err_state INT;

    SELECT @err_str = ERROR_MESSAGE(),

    @err_sev = ERROR_SEVERITY(),

    @err_state = ERROR_STATE();

    RAISERROR(@err_str, @err_sev, @err_state);

    END CATCH;

    There are no special teachers of virtue, because virtue is taught by the whole community.
    --Plato