SET XACT_ABORT ON
indica a SQL Server di eseguire il rollback dell'intera transazione e di interrompere il batch quando si verifica un errore di runtime. Ti copre in casi come il timeout di un comando che si verifica nell'applicazione client piuttosto che all'interno di SQL Server stesso (che non è coperto dall'impostazione predefinita XACT_ABORT OFF
impostazione.)
Poiché il timeout della query lascerà aperta la transazione, SET XACT_ABORT ON
è consigliato in tutte le stored procedure con transazioni esplicite (a meno che tu non abbia un motivo specifico per fare diversamente) poiché le conseguenze di un'applicazione che esegue il lavoro su una connessione con una transazione aperta sono disastrose.
C'è un'ottima panoramica sul blog di Dan Guzman,