I have an asp.net page that reads some data from an Excel spreadsheet that users can upload, and then writes it to various tables in the db (Sql Server 2k). It loops over a datareader from Excel and tries a write for each row. This works fine. <BR><BR>Previously, the page directly accessed stored procedures for the writing, so I could attach a transaction object to the connection to the db and then either commit at the end if all Excel rows were ok, or rollback and report which Excel rows were bad. This also worked fine. <BR><BR>However, now I want to take advantage of some objects that contain business logic for writing to the db. Since I don&#039;t have direct access to the connections they are using (and of course they all use their own connections), I can&#039;t simply attach a transaction and roll it back. I tried adding Transaction="Required" to the page, but the Excel connection (of type Jet 4) can&#039;t handle distributed transactions so it bombs. <BR><BR>How can I either A) opt the Excel connection out of the transaction (I don&#039;t need it in there anyway since it is only reading) or B) somehow attach a common transaction to the objects that are doing the writing so I can roll it back if need be? <BR><BR>Thanks!