SET XACT_ABORT ON
indica a SQL Server que revierta toda la transacción y anule el lote cuando se produzca un error en tiempo de ejecución. Lo cubre en casos como un tiempo de espera de comando que ocurre en la aplicación cliente en lugar de dentro de SQL Server (que no está cubierto por XACT_ABORT OFF
predeterminado). ajuste.)
Dado que el tiempo de espera de una consulta dejará abierta la transacción, SET XACT_ABORT ON
se recomienda en todos los procedimientos almacenados con transacciones explícitas (a menos que tenga una razón específica para hacerlo de otra manera), ya que las consecuencias de que una aplicación realice un trabajo en una conexión con una transacción abierta son desastrosas.
Hay una muy buena descripción general en el blog de Dan Guzman,