Por que o Sql Server continua executando após raiserror quando xact_abort está ativado?

Acabei de me surpreender com algo no TSQL. Eu pensei que, se xact_abort estava ativado, chamando algo como

raiserror('Something bad happened', 16, 1);

nterromperia a execução do procedimento armazenado (ou qualquer lote

Mas minha mensagem de erro do ADO.NET acabou de provar o contrário. Recebi a mensagem de erro raiserror na mensagem de exceção e a próxima coisa que ocorreu depois diss

Esta é minha solução alternativa (que é meu hábito de qualquer maneira), mas não parece que seja necessário:

if @somethingBadHappened
    begin;
        raiserror('Something bad happened', 16, 1);
        return;
    end;

Os documentos dizem o seguinte:

uando SET XACT_ABORT estiver ativado, se uma instrução Transact-SQL gerar um erro em tempo de execução, a transação inteira será encerrada e revertid

Isso significa que devo estar usando uma transação explícita?

questionAnswers(4)

yourAnswerToTheQuestion