No entiendo prácticamente nada del enredo que aparece, pero la idea básica es usar una transacción con un commit o un rollback para terminar.
Solo necesitas lidiar con los posibles errores entre operaciones con su rollback correspondiente. La versión "quick n' dirty" es algo así:
Código:
BEGIN TRAN
insert into tabla1 (registro1,registro2,registro3)
values (dato1,dato2,dato3)
IF @@Error <> 0 ROLLBACK TRAN
insert into tabla2 (registro1,registro2,registro3)
values (dato1,dato2,dato3)
IF @@Error <> 0 ROLLBACK TRAN
insert into tabla3 (registro1,registro2,registro3)
values (dato1,dato2,dato3)
IF @@Error <> 0 ROLLBACK TRAN
COMMIT TRAN
PD. Si tu código está indentado y además lo metes en unos tags [ code ][ /code ] (sin los espacios) se digerirá mucho mejor.