For the past week I've been working on creating a package in SSIS that will extract, transform, and then load data from an Access database into a SQL Server database. Initially I created two separate packages to handle migrating bits of data from the same table in Access, transforming it, and then loading it into two different tables in SQL Server. Those worked on their own separately, but now I am trying to fold them into one package.
From what I've investigated, this is more than feasible (having a package with one data flow with two sources and destinations) but for some reason I can't get it to work. Looking into the error codes I got, people suggested using data conversion, but I previously had errors thrown at me regarding data types that I have solved using data conversion.
The errors that SSIS throws at me when I run the package are as follows:
Error: 0xC0202009 at Data Flow Task, InfoTable [52]: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005.
An OLE DB record is available. Source: "Microsoft SQL Server Native Client 11.0" Hresult: 0x80004005 Description: "Unspecified error".
Error: 0xC020901C at Data Flow Task, InfoTable [52]: There was an error with InfoTable.Inputs[OLE DB Destination Input].Columns[Copy of Parameter] on InfoTable.Inputs[OLE DB Destination Input]. The column status returned was: "The value violated the integrity constraints for the column.".
Error: 0xC0209029 at Data Flow Task, InfoTable [52]: SSIS Error Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR. The "InfoTable.Inputs[OLE DB Destination Input]" failed because error code 0xC020907D occurred, and the error row disposition on "InfoTable.Inputs[OLE DB Destination Input]" specifies failure on error. An error occurred on the specified object of the specified component. There may be error messages posted before this with more information about the failure.
Error: 0xC0047022 at Data Flow Task, SSIS.Pipeline: SSIS Error Code DTS_E_PROCESSINPUTFAILED. The ProcessInput method on component "InfoTable" (52) failed with error code 0xC0209029 while processing input "OLE DB Destination Input" (65). The identified component returned an error from the ProcessInput method. The error is specific to the component, but the error is fatal and will cause the Data Flow task to stop running. There may be error messages posted before this with more information about the failure.
Thank you in advance for any help that can be given!
I was able to figure it out; it was due to the data I was trying to load that contained some null values. Normally this would be fine, but my SQL Server database (specifically the table that the data is being loaded into) is setup to not allow Nulls. I believe this is what was causing the issue even with the "allow nulls" on the OLE DB Destination > table or view - fast load checked.
The solution seems to be either fixing the SQL Server table to accept Nulls or not trying to load nulls into the table. I did the latter and everything worked ok (didn't even need a data conversion).
I can't say for sure without seeing everything in detail, but based on the error and your description of the problem, I suspect you have a foreign key relationship and some of that data is being loaded before the primary key gets loaded. If so, look at adding a precedence constraint to load the first table followed by the second using two separate data flows in the same package.
User contributions licensed under CC BY-SA 3.0