Lamentablemente no trabajo con dot net, y no se como todo esta ejecutado atrevés de este entorno. Lo único que puedo contribuir es de como las cosas deben ser en el SQL Server.
La ejecución debe ser máa o menos así:
Código SQL:
Ver originalBEGIN Try
BEGIN TRANSACTION;
EXEC insertarcliente;
EXEC insertarventa;
EXEC insertarproductosvendidos;
Commit;
END Try
BEGIN Catch
ROLLBACK;
END Catch
Es decir- ejecutar los tres procedimientos en una transacción.
La inserción de los 250 registros- mejor que la hagas en una instrucción y no en 250:
Código SQL:
Ver originalINSERT INTO clientes (campos .....)
VALUES (..,..,..),(..,..,..),(..,..,..),(..,..,..),...,(..,..,..);
Otra opción:
Código SQL:
Ver originalINSERT INTO clientes (campos .....)
SELECT ..,..,.. UNION ALL
SELECT ..,..,.. UNION ALL
..
..
SELECT ..,..,.. ;