Table Difference - old bug?

164 views
Skip to first unread message

Michal Zglinski

unread,
Apr 25, 2012, 10:20:04 AM4/25/12
to CozyRoc
Hi,
I have this scenario:

In SSIS I have "For Each Loop" with list of files to process.
When one file fails somewhere (for example data type is wrong) next
file should be processed.
When next file is bigger than 100kB Table Difference fails with this
error:



Table Difference [34971]: System.Exception: Consumer Exception --->
System.NullReferenceException: Object reference not set to an instance
of an object.
at Microsoft.SqlServer.Dts.Pipeline.PipelineBuffer.AddRow()
at
CozyRoc.SqlServer.SSIS.TableDifference.OutputInformation.AddRowToOutputBuffer(Row
row)
at CozyRoc.SqlServer.SSIS.TableDifference.processBuffers()
--- End of inner exception stack trace ---
at CozyRoc.SqlServer.SSIS.TableDifference.PostExecute()
at
Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostPostExecute(IDTSManagedComponentWrapper100
wrapper)
Error: 0xC0047018 at DFT Load FactSales data, SSIS.Pipeline: component
"Table Difference" (34971) failed the post-execute phase and returned
error code 0x80131500.



... but when next file is small (<100kB) Table Difference works fine.


I've tried to find if anyone else had this problem and found a page:
http://sqlblog.com/blogs/alberto_ferrari/archive/2008/02/22/tabledifference-version-2-0-has-been-released.aspx

where founder of Table Difference wrote that this is old bug.

Also, in source code of version 2.0 I found this comment, that might
be useful:
// Starting from SQL 2008 the PostExecute method is
called imediately after all input have been read,
// this makes the parallel processing of the consumer
thread stop working, as the component buffers
// are being deallocated during its execution.
//
// For this reason, in the case where both inputs have
finished reading data, we DO NOT RETURN FROM
// ProcessInput until the consumer thread has finished
its work. It's an awful solution as it
// is a trick to fool SSIS that is not able to understand
that a component might be parallel and
// process its rows in a separate thread.
//
// Blame to microsoft for:
//
// Not having documented this behavior change in any
way
// Implemented a so silly way of handling concurrency
in components
//
//


Any suggestions?
Thank you in advance
Best regards
Michal

Ivan Peev

unread,
Apr 27, 2012, 7:22:49 PM4/27/12
to coz...@googlegroups.com
Hi Michal,

The Alberto's comment you are referring to is for a different error and it 
is not related to the error you have. Please send a complete test package 
to CozyRoc's support, which can reproduce the error in the Table Difference 
component and we will review it . Thank you!

Regards,
Ivan
Reply all
Reply to author
Forward
0 new messages