Buenas, el rollback solo te sirve para la transaccion activa, si en ella llamas a otro procedimiento el hara lo suyo sin intervenir en lo que haces en el primer proc.
Ejemplo:
Código:
proc1
exec 'proc2 1,2,3,4'
begin transaccion pepe
insert into tabla (a,b,c,d)
values (1,2,3,4)
if @@error<>0
rollback...
else
commint....
Esto ha sido siempre asi, lo si puedes hacer es crear un tercer procedimiento, en el cual puedas volver atras lo que hizo el 2, ejemplo:
Código:
if @@error<>0
begin
rollback...
exec 'proc3'
end
else
commint....
Donde el proc3 anularia lo que hizo el proc2...
Saludetes !!!