Два способа выполнения транзакций в MSSQL, с отменой по ошибке.
Первый способ:
BEGIN TRY
BEGIN TRAN
UPDATE 1
UPDATE 2 --Error
UPDATE 3
COMMIT TRAN
END TRY
BEGIN CATCH
ROLLBACK TRAN
END CATCH
Второй способ:
SET XACT_ABORT ON
BEGIN TRAN
UPDATE 1
UPDATE 2 --Error
UPDATE 3
COMMIT TRAN
Оба способа сделают одно и то-же, в случае ошибки будет произведен откат транзакции.