SQL Server and SSIS are both version 2008 R2
I had an existing SSIS package that was copying 6000 rows from our IBM database to a SQL Server database daily. Now I need to copy the same data to a second SQL Server so I thought using the Multicast tool would be a perfect solution.
I deleted the connector between the conversion widget and the original data destination then added a multicast widget between the conversion widget and the original destination. Then added a new destination and connected a second pipe from the multicast tool to that.
When I run it, the SSIS interface and the log tab both indicate that 6000 rows were written to both destinations. However, when I look at those destination tables the new destination has 12000 rows in it. Every row appears twice. The original destination has the correct 6000 rows in it.
If I temporarily delete the first (original) destination then the new destination gets the correct 6000 rows. I can delete both pipes and re-create them and no matter which order I do it, the original destination gets the correct number of rows and the new destination gets double that. The only way I can get the new destination to get the correct row-count is when it is the only destination hooked up.
If I add an IDENTITY column to the new destination table the duplicate rows are not added in any particular order (assuming IDENTITY value corresponds to insertion order). That is, IDENTITY 2 is not a duplicate of IDENTITY 1, nor is IDENTITY 6001. The values seem completely arbitrary.
I have tried multiple setting for rows-per-batch (even 1) with no change in behavior. The destination table has no keys, indexes, constraints, or triggers. It's currently just a "bucket of data". it was created by scripting the original destination table and running that script on the second server.