SSIS 包错误 - SSIS 错误代码 DTS_E_PROCESSINPUTFAILED

4

SSIS作业失败,并显示以下错误:

[产品销售[749]] 错误:在数据插入期间发生异常,提供程序返回的消息为:无法将来自数据源的 String 类型的给定值转换为指定目标列的 float 类型。

[SSIS.Pipeline] 错误:SSIS 错误代码 DTS_E_PROCESSINPUTFAILED。组件“产品销售”(749)上的 ProcessInput 方法在处理输入“ADO NET Destination Input”(752)时失败,错误代码为 0xC020844B。已识别的组件从 ProcessInput 方法返回了一个错误。该错误特定于该组件,但该错误是致命的,并将导致数据流任务停止运行。在此之前可能会发布更多有关故障的信息。

请问是否有人遇到过这种错误?

谢谢

3个回答

4
您的错误消息已经告诉您问题所在:"从数据源中给定的字符串类型的值无法转换为指定目标列的浮点类型。"
打开出现问题的组件并检查元数据。您某个地方有一个浮点列,而您正在传递给此列一个无法转换为浮点数的字符串,例如空格或带字母数字的值。
如果您想确保这些值是浮点数,则可以在出现问题的组件之上添加一个脚本组件,并编写一些代码以确保该值被正确地清理:
string input = "1.1"; //Replace with your input buffer value
float result;
float.TryParse(input, out result); //Result = 0.0 if value was not parsed

非常感谢您的回复。我发现原因在于几笔交易的净销售额列中存在空值。这就是原因。 - MSM
很高兴能帮忙 :) - Brandon Church

2
请在源和目标之间添加一个“数据转换任务”,将数据类型从“字符串”更改为“浮点数”,这将解决您的问题。如果仍然遇到问题,请告诉我确切的问题是什么,源是什么,使用哪个SSIS任务。

0
使用OLE DB源和目标代替ODC,并尝试缩短列名长度,不要在列名中使用括号,并使用表格和快速加载。这应该可以解决问题。我曾经遇到过同样的问题,即通过DAX查询从分析服务立方体加载到我的本地机器的SQL表中。

这个问题有一个正确的答案,但在过去的三年中,问题是数据类型,而这个解决方案是不正确的。请阅读帮助中心:https://stackoverflow.com/help,并在这里获得铜牌:https://stackoverflow.com/tour - Amirhossein

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接