Это зависит от настроек сеанса и типа ошибки.Если это ошибка завершения оператора, то транзакция просто продолжается со следующего оператора.Если это ошибка завершения пакета, то транзакция прерывается.
Чтобы избежать проблем с ошибками завершения оператора, убедитесь, что вы ранее выполнили:
SET XACT_ABORT ON;
, а затем все операторы-завершающие ошибки также прерывают транзакцию и откатываются.
Некоторые программные клиентские библиотеки включают ее автоматически, и поэтому вы, возможно, ранее видели автоматический откат, но я обычно добавляю его в качестве первой строкииз всех моих хранимых процедур, просто чтобы быть уверенным.