Add your experiences and workarounds here. If you have solved this issue, why not help the next person?
I caused this error to occur by using ComponentMetaData.InputCollection[0].GetVirtualInput().VirtualInputColumnCollection.GetVirtualInputColumnByLineageID(lineageID); in the SetUsageType method for a component I was writing. The actual error did not occur until SetUsageType returned. Removing the ComponentMetaData.InputCollection[0].GetVirtualInput() and using the virtualInput argument to SetUsageType fixed the error.
I received this error when executing a custom .NET Component, which loads records into a data table to perform a unique check. The error seems to occur when I am loading a large amount of data into my package (>500,000 rows), so I am attributing it to reaching a memory limit, but I need to do more research to confirm. The error seems to be ocurring when records are being added to the output buffer. The exact error message is logged as:
<Description>Exception from HRESULT: 0xC0047041</Description>
<Source> at Microsoft.SqlServer.Dts.Pipeline.Wrapper.IDTSOutputColumn90.get_Length()</Source>
Once this error is thrown a subsequent Exception from HRESULT: 0xC0047020 error is thrown, indicating that the thread is shut down.
[http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=355408&SiteID=1]
Since our custom controllers were processing multiple buffers we would create a virtual input for each buffer. We simply modified the code by:
Dim vInput As IDTSVirtualInput90 (as Global)
' and then running a simple test to make sure the object is all ready created:
If intFlag = 0 Then
vInput = input.GetVirtualInput()
intFlag = 1
End If
-I just have to delete a Data Flow Path which is connected as an input of a Merge Join component to get this error message :added by clement: