Kom ihåg att det finns fel som TRY-CATCH inte kommer att fånga med eller utan XACT_ABORT
.
Men SET XACT_ABORT ON
påverkar inte fångst av fel. Det garanterar dock att alla transaktioner rullas tillbaka / dömda. När "AV" har du fortfarande valet mellan commit eller rollback (med förbehåll för xact_state). Detta är den huvudsakliga beteendeförändringen för SQL 2005 för XACT_ABORT
Vad den också gör är att ta bort lås etc om klientkommandot timeout slår in och klienten skickar "avbryt"-direktivet. Utan SET XACT_ABORT
, lås kan finnas kvar om anslutningen förblir öppen. Min kollega (en MVP) och jag testade detta noggrant i början av året.