SET XACT_ABORT ON
instrui o SQL Server a reverter toda a transação e anular o lote quando ocorrer um erro em tempo de execução. Ele cobre você em casos como um tempo limite de comando que ocorre no aplicativo cliente em vez de dentro do próprio SQL Server (que não é coberto pelo padrão XACT_ABORT OFF
contexto.) Como um tempo limite de consulta deixará a transação aberta,
SET XACT_ABORT ON
é recomendado em todos os procedimentos armazenados com transações explícitas (a menos que você tenha um motivo específico para fazer o contrário), pois as consequências de um aplicativo executando trabalho em uma conexão com uma transação aberta são desastrosas. Há uma ótima visão geral no blog de Dan Guzman,