【发布时间】:2017-01-05 14:00:40
【问题描述】:
我以前见过这种类型的错误(例如截断),之前有字符串,但没有日期时间字段。
有一个似乎在源头失败的数据流任务。 OLEDB 数据源是对过程的调用,结果集的列中有一个日期时间字段 GAPPOSTDT。返回值是一个日期时间,该过程返回的结果很好。当我通过数据流任务运行它时,情况并非如此。查看 oledb 源的高级属性,我看到该字段的类型设置为数据库时间戳 [DT_DBTIMESTAMP],这似乎是正确的。
什么可能导致该字段没有被映射?
我试过简单地删除数据流任务并重新创建它。同样的问题。
请参阅下面的错误消息。
错误:0xC020901C 在数据流任务,OLE DB 源 [1]:有一个 输出“OLE DB 源”上的输出列“GAPOSTDT”(61) 出错 输出”(11)。返回的列状态是:“该值不能是 由于潜在的数据丢失而转换。”。错误:0xC0209029 at 数据流任务,OLE DB 源 [1]:SSIS 错误代码 DTS_E_INDUCEDTRANSFORMFAILUREON错误。 “输出列“GAPOSTDT” (61)" 失败,因为发生错误代码 0xC0209072,并且错误行 “输出列“GAPOSTDT”(61)”上的处置指定失败 错误。在指定的指定对象上发生错误 零件。在此之前可能会发布更多错误消息 有关失败的信息。
[更新 #1]
SSIS 2008
所以我将过程输出更改为返回 varchar(10) 而不是 datetime。数据流中的 OLEDB 源现在出现以下错误
错误:数据流任务中的 0xC020901C,OLE DB 源 [1]:输出“OLE DB 源输出”(11) 上的输出列“GAPOSTDT”(61) 出现错误。返回的列状态为:“文本被截断或一个或多个字符在目标代码页中不匹配。”。 错误:数据流任务中的 0xC020902A,OLE DB 源 [1]:“输出列“GAPOSTDT”(61)”失败,因为发生了截断,并且“输出列“GAPOSTDT”(61)”上的截断行处置指定失败截断。指定组件的指定对象发生截断错误。
我现在怀疑数据中有一些“愚蠢”的字符。源系统中使用的排序规则是 SQL_Latin1_General_CP1_CI_AS
[更新 #2]
好的,我想我可能已经找到了问题所在。在我的程序中,我有一个“虚拟”结果,因为我的程序使用临时表,这是 SSIS 的一种“解决方法”(参见其他主题)。我的最终结果和虚拟结果的列顺序错误。因此,这会将数据放入错误的列中。当我戴上数据查看器时,我注意到了这一点。弹出后,我注意到数据进入了错误的列。奇怪的我想,然后在回顾了我的程序后,我找到了罪魁祸首。
【问题讨论】:
-
什么版本的 SSIS?这可能无关紧要,但它可以。
-
查看上面的更新
标签: sql-server ssis