Từ tài liệu (dành cho SQL Server nhỏ gọn, nhưng vẫn có liên quan):
Trong ví dụ đầu tiên, bạn đang mở một kết nối trong phạm vi giao dịch. Trong lần thứ 2, bạn không nhập ngũ.
Thử thêm:
cmd.Connection.EnlistTransaction(Transaction.Current);
Để xem điều đó có hữu ích không.