I have two different problems, both related to transactions. Although the use-cases are basic, I can't find simple solutions.
Before somebody suggests using RetainSameConnection = true and manual BEGIN TRAN / COMMIT / ROLLBACK, this is NOT a solution because my data flow requires multiple connections and SSIS will NOT satisfy my RetainSameConnection demand.
[1] Is it possible to exclude a read-only connection manager from transactions?
I ask because I have a connection manager that cannot enlist into DTC -- and doesn't need to. But it makes make package fail.
Current solution is to use two data flows, one for reading (no tx), one for writing (inside a tx) and pass the data around into a raw file. This is ugly and inefficient.
[2] Inside my transactional flow, I would like to log error rows into a special table for further error analysis. This seems a basic requirement to me but it turns out to be hard to do. The DTC seem to be all-or-nothing, so if I redirect error rows to a
DB destination, they are enlisted into the transaction and rolled back after the failure of the data flow.
Possible solutions could be: use another connection manager outside the DTC if possible (same as [1], seems impossible); or exclude a destination task from the DTC (also seems impossible).
Only solution I see: write the errors into a non-transactional destination (i.e. raw file) and save them later after the rollback. Like one [1] this is ugly and inefficient.
What is the recommended/right way of doing this?