От документите (за компактен SQL Server, но все още уместен):
В първия пример отваряте връзка в обхват на транзакция. Във втория не се записвате.
Опитайте да добавите:
cmd.Connection.EnlistTransaction(Transaction.Current);
За да видите дали това помага.