无法使用SSIS将数据从Excel加载到SQL

时间:2017-11-13 15:11:17

标签: sql-server excel ssis etl

我正在尝试使用SSIS包将excel文件导入SQL服务器,但每次我尝试上传此文件时,上一行中的某些行都不会上传,准确地说55107应该上传但只有54990得到上传。 117行正在创建一些问题,我无法弄清楚为什么会这样。请帮助我理解此错误消息,以便我可以解决此问题。以下是我收到的错误消息:

  

SSIS包“C:\ Users \ A670814 \ Documents \ Visual Studio 2015 \ Projects \ Integration Services Project1 \ Integration Services Project1 \ NDCS Towers.dtsx”开始。   信息:NDCS塔上的0x4004300A,SSIS.Pipeline:验证阶段正在开始。

     

信息:NDCS塔上的0x4004300A,SSIS.Pipeline:验证阶段正在开始。   警告:NDCS塔上的0x80049304,SSIS.Pipeline:警告:无法打开全局共享内存以与性能DLL通信;数据流性能计数器不可用。要解决此问题,请以管理员身份运行此程序包,或在系统控制台上运行。   信息:NDCS塔上的0x40043006,SSIS.Pipeline:准备执行阶段正在开始。   信息:NDCS塔上的0x40043007,SSIS.Pipeline:预执行阶段正在开始。   信息:NDCS塔上的0x4004300C,SSIS.Pipeline:执行阶段正在开始。   错误:NDCS塔上的0xC0202009,OLE DB目标[280]:SSIS错误代码DTS_E_OLEDBERROR。发生OLE DB错误。错误代码:0x80004005。   OLE DB记录可用   来源:“Microsoft SQL Server Native Client 11.0”Hresult:0x80004005描述:“未指定的错误”。   错误:NDCS塔上的0xC020901C,OLE DB目标[280]:OLE DB Destination.Inputs [OLE DB目标输入] .Columns [ID的副本]在OLE DB Destination.Inputs [OLE DB目标输入]上出错。返回的列状态为:“该值违反了列的完整性约束。”。

     

错误:NDCS塔上的0xC0209029,OLE DB目标[280]:SSIS错误代码DTS_E_INDUCEDTRANSFORMFAILUREONERROR。 “OLE DB Destination.Inputs [OLE DB目标输入]”失败,因为发生错误代码0xC020907D,并且“OLE DB Destination.Inputs [OLE DB目标输入]”上的错误行处置指定错误失败。指定组件的指定对象发生错误。在此之前可能会发布错误消息,其中包含有关失败的更多信息。

     

错误:NDCS塔上的0xC0047022,SSIS.Pipeline:SSIS错误代码DTS_E_PROCESSINPUTFAILED。组件“OLE DB目标”(280)上的ProcessInput方法在处理输入“OLE DB目标输入”(293)时失败,错误代码为0xC0209029。标识的组件从ProcessInput方法返回错误。该错误特定于组件,但错误是致命的,将导致数据流任务停止运行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。

     

错误:NDCS塔上的0xC02020C4,Excel源[156]:尝试向数据流任务缓冲区添加行失败,错误代码为0xC0047020。   错误:NDCS塔上的0xC0047038,SSIS.Pipeline:SSIS错误代码DTS_E_PRIMEOUTPUTFAILED。 Excel Source上的PrimeOutput方法返回错误代码0xC02020C4。当管道引擎调用PrimeOutput()时,组件返回失败代码。失败代码的含义由组件定义,但错误是致命的,管道停止执行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。   信息:NDCS塔上的0x40043008,SSIS.Pipeline:后执行阶段正在开始。   信息:NDCS塔上的0x4004300B,SSIS.Pipeline:“OLE DB Destination”写了55107行。   信息:NDCS塔的0x40043009,SSIS.Pipeline:清理阶段正在开始。   任务失败:NDCS塔

     

警告:NDCS Towers的0x80019002:SSIS警告代码DTS_W_MAXIMUMERRORCOUNTREACHED。执行方法成功,但引发的错误数(6)达到允许的最大值(1);导致失败。当错误数达到MaximumErrorCount中指定的数量时,会发生这种情况。更改MaximumErrorCount或修复错误。

     

SSIS包“C:\ Users \ A670814 \ Documents \ Visual Studio 2015 \ Projects \ Integration Services Project1 \ Integration Services Project1 \ NDCS Towers.dtsx”已完成:失败。

1 个答案:

答案 0 :(得分:0)

  

OLE DB Destination.Inputs [OLE DB目标输入] .Columns [ID的副本]在OLE DB Destination.Inputs [OLE DB目标输入]上出错。返回的列状态为:"该值违反了列的完整性约束。"。

看起来有很多行[Copy of ID]列为空,或者SQL服务器中的[Copy of ID]列存在一些限制,这些限制在excel文件的某些行中被违反。

尝试删除[Copy of ID]列中不包含任何数据的行,或者您可以通过添加条件拆分组件来过滤它们并过滤以下信息

ISNULL([Copy of ID])

或者您可以使用Sql server management studio访问目标SQL表,并转到SQL表设计模式,并检查列Allow null

的选项[Copy of ID]

类似的问题以及许多有用的答案:The value violated the integrity constraints for the column