Si en bloque transaccional vas a ejecutar varias sentencias de acción (borrado, inserció o acutalización) debes comprobar el valor de @@ERROR al final de cada una de ellas.
Tu bloque debe quedar así
Código SQL
[-]
Begin Tran
--sql1...
if @@error <> 0
Begin
rollback tran
GOTO: MANEJADORERROR
End
--sql2...
if @@error <> 0
Begin
rollback tran
GOTO: MANEJADORERROR
End
commit tran
--Termina el Sp
Return
MANEJADORERROR:
RaiseError(--notificación de error a nivel de sistema)
Suerte