Från dokumenten (för SQL Server kompakt, men fortfarande relevant):
I det första exemplet öppnar du en anslutning i ett transaktionsomfång. I 2:an värvar du inte.
Testa att lägga till:
cmd.Connection.EnlistTransaction(Transaction.Current);
För att se om det hjälper.