Tengo una función en c# para eliminar a un usuario con perfil de administrador de la base de datos. Pero al eliminar a ese tipo de usuario, se tienen que llevar a cabo otra serie de acciones, como por ejemplo, eliminar las "relaciones" de ese usuario con otros módulos, dar de alta a otro usuario para que ocupe el lugar de administrador, etc... y claro, todas estas acciones se tienen que hacer o todas o ninguna de tal forma que si falla una se pudieran "deshacer" los cambios hechos por las otras.
Todas estas operaciones individuales de acceso/modificación de la base de datos las tengo hechas mediante "procedimientos almacenados" (una para eliminar al usuario, otra para eliminar las relaciones con los módulos, otra para dar de alta a otro usuario, etc) y lo que hago es en la función de c# llamar uno tras otro a estos procedimientos... pero, ¿cómo puedo controlar que si falla uno de estos procedimientos, se deshagan los cambios realizados por los otros? ¿Hay alguna forma de hacer una transacción al conjunto de todas estas llamadas a procedimientos almacenados?

Gracias por la ayuda...