You don't actually have to alter your source data, but you can use a customised SQL command in your
OLE DB Datasource. Basically change the Data access mode from
Table or view to
SQL command or even
SQL command from variable and create your statement to include your PIN code, something like this:
SELECT *, 1 + ABS(CHECKSUM(NEWID())) % 9999 PIN
No need for Derived Column, Script Task etc. Make sense?
Another approach would be to assign some kind of arbitrary row id to your source table and a similar id to your unique account ids table and join on that, something like this:
ROW_NUMBER() OVER( ORDER BY ( SELECT NULL ) ) rowId,
INNER JOIN dbo.uniqueAccounts a ON x.rowId = a.rowId
Similar to the above approach, you can hold this SQL in your OLE DB Source without affecting your actual source data. In order for this to work you must a) persist your unique accounts and give them an arbitrary row id and b) there must be more unique accounts than there are original records, eg generate a few million up front.