SSIS OLE DB错误问题

时间:2017-11-08 20:43:18

标签: sql-server ms-access ssis database-migration error-code

在过去的一周里,我一直致力于在SSIS中创建一个包,该包将提取,转换,然后将数据从Access数据库加载到SQL Server数据库中。最初,我创建了两个独立的包来处理从Access中的同一个表迁移数据,转换它,然后将它加载到SQL Server中的两个不同的表中。那些单独工作,但现在我试图将它们折叠成一个包。

从我所研究的内容来看,这是可行的(包含一个包含两个源和目的地的数据流的包)但由于某种原因我无法使其工作。查看我得到的错误代码,人们建议使用数据转换,但我以前在使用数据转换解决的数据类型方面遇到了错误。

运行程序包时SSIS抛出的错误如下:

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.

提前感谢您提供任何帮助!

2 个答案:

答案 0 :(得分:2)

我能够弄明白;这是由于我试图加载的数据包含一些空值。通常情况下这很好,但我的SQL Server数据库(特别是加载数据的表)被设置为不允许Null。我相信即使在OLE DB Destination>上使用“allow nulls”,这也是导致问题的原因。表或视图 - 快速加载检查。

解决方案似乎是修复SQL Server表以接受Null或不尝试将空值加载到表中。我做了后者,一切正常(甚至不需要数据转换)。

答案 1 :(得分:0)

如果没有详细了解所有内容,我无法确定,但根据错误和问题描述,我怀疑你有一个外键关系,并且在主键加载之前加载了一些数据。如果是这样,请查看添加优先约束以在同一个包中使用两个单独的数据流加载第一个表,然后加载第二个表。