Internal Error: Value cannot be null

Topics: Issues 3: Executing the Component (Run-Time), Possible Bugs/Missing Features?
Apr 25, 2012 at 8:01 PM

I'm using the Dimension Merge SCD component in all of our dimension ETL packages to handle slowly changing dimensions (mostly type I but some type II).  I'm getting an internal error from the component in only one of the packages, and only under certain conditions.  When I run each of the dimension loads for the initial load (when the destination is empty), everything works fine for all packages.  When I re-run the packages (even without any data changes in the source), all packages succeed except one package.  This particular package has 5 rows in the source input and 5 rows in the destination input.  The table is pretty wide (168 columns) though.  The package sends the 5 rows to the source and the 5 rows to the destination, then immediately the component blows up.  The package returns a canceled status, and this is in the output:

Error: 0x0 at DFT DimAccount Load Data, Dimension Merge Slowly Changing Dimension: Internal error (Value cannot be null.

Parameter name: culture) in ProcessKey, detecting SCD1 and 2 changes in column AccountClassification, key: 1800000001000000.

Error: 0x0 at DFT DimAccount Load Data, Dimension Merge Slowly Changing Dimension: Internal error (Internal error (Value cannot be null.

Parameter name: culture) in ProcessKey, detecting SCD1 and 2 changes in column AccountClassification, key: 1800000001000000.) in ProcessKey detecting changes, key: 1800000001000000.

Error: 0x0 at DFT DimAccount Load Data, Dimension Merge Slowly Changing Dimension: Internal error (Internal error (Internal error (Value cannot be null.

Parameter name: culture) in ProcessKey, detecting SCD1 and 2 changes in column AccountClassification, key: 1800000001000000.) in ProcessKey detecting changes, key: 1800000001000000.) in ProcessCache_Thread_ProcessKey.

SSIS package "DimAccountOCC.dtsx" finished: Canceled.

The specific column referenced is a type I attribute, and the data type is DT_WSTR(255).  The data in the source is unchanged, and the values are not null in any of the 5 rows in the source or destination.  The value is the same for all rows, and it is a string that is 16 characters long.  It is very strange that when there are 5 rows on the source input and 0 on the destination input that the package succeeds, but when there are 5 rows on each the package fails.  Further adding to the strangeness is that there is a second package that populates the same table but from a different source (thus the pipeline metadata is identical).  That source has 400,000 rows in the source and 400,000 rows in the desination, but it succeeds.  These packages do NOT run simultaneously.  Resources on the server are not an issue either, as this is the only package executing when it errors and the server is huge.  I am using v1.6 (x64) of the component.  I am running SQL Server 2008 R2 x64.  Any help is much appreciated.

Regards,

Ben

May 6, 2012 at 4:12 PM

This issue was resolved by deleting the component from the data flow and re-adding it from the toolbox with the exact same settings as it had previously.  I'm not sure of the root cause of the issue.

Feb 11, 2013 at 3:05 PM
Thanks for posting this! I am having the exact same issue. Will try to delete the component and re-add it to see what would happen.