• Maybe you should add a WHERE clause to your UPDATE statement?

    Update TableB

    Set Description = ?

    WHERE TableB.Key = ?

    In the second parameter you map the key that needs to be updated.

    The OLE DB Command updates TableB row by row which is incredibly slow.

    Also, the MERGE JOIN requires sorted input and the SORT component in SSIS is a blocking component (meaning all data has to be read into memory). All this means your package will be slow for larger data sets.

    What I usually do is a reading TableA, fetching data from TableB using a LOOKUP and then use the conditional split to find out if a row is an insert or an update. Inserts are directly inserted into tableB using an OLE DB destination with fast load.

    Updates are insterted into a staging table. After the data flow, an Execute SQL Statement is used to update tableB using the data from tableB.

    Something like this:

    UPDATE B

    SET ...

    FROM TableB B

    JOIN myStagingTable stg ON B.Key = stg.Key

    Need an answer? No, you need a question
    My blog at https://sqlkover.com.
    MCSE Business Intelligence - Microsoft Data Platform MVP