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?