y si manejas transacciones, y el commit tran lo haces en el ultimo paso?? algo como esto:
Código SQL:
Ver originalStep 1
BEGIN tran
step 2
BEGIN tran1
IF fails
ROLLBACK tran
ROLLBACK tran1
step 3
BEGIN tran2
IF fails
ROLLBACK tran
ROLLBACK tran1
ROLLBACK tran2
ELSE
commit tran
commit tran1
commit tran2
algo asi, no se si se pueda seria investigarlo, o lo otro que puedes hacer es que guardes tus cambios en alguna tabla temporal y una vez que se complete todo el proceso actualizar o insertar donde se deba :P