Lembre-se de que existem erros que o TRY-CATCH não captura com ou sem
XACT_ABORT
. No entanto,
SET XACT_ABORT ON
não afeta a captura de erros. Ele garante que qualquer transação seja revertida / condenada. Quando "OFF", você ainda tem a opção de commit ou rollback (sujeito a xact_state). Esta é a principal mudança de comportamento do SQL 2005 para XACT_ABORT
O que ele também faz é remover bloqueios, etc., se o tempo limite do comando do cliente entrar em ação e o cliente enviar a diretiva "abort". Sem
SET XACT_ABORT
, os bloqueios podem permanecer se a conexão permanecer aberta. Meu colega (um MVP) e eu testamos isso completamente no início do ano.