【发布时间】:2016-05-20 01:35:31
【问题描述】:
我在 XSD 文件中有一个具有以下定义的属性 tlost。 use="required" 和 use="optional" 我都试过了。
<xs:attributeGroup name="defense">
<xs:attribute name="tlost" use="required" type="xs:decimal"/>
</xs:attributeGroup>
在我尝试导入的 XML 文档中,我将获得如下值:
<defense ast="0" category="special_team" tlost="0" int="0"/>
我正在执行一个 SSIS 包,它获取 tlost 值并将其插入到 sql 数据库表中。数据库表中的列的数据类型为DECIMAL(28,10),并允许nulls。
当我执行包时,以前的值可以正常工作并插入数据。但是,当我在 XML 文件中获得 tlost="" 的值时,包失败并且没有插入记录。
在数据流路径编辑器中,tlost 的数据类型为DT_DECIMAL。当我检查 XML 源的高级编辑器时,输入和输出属性的数据类型为 tlost 作为十进制[DT_DECIMAL]。
我不知道为什么会失败。我尝试创建一个派生列并将其转换为 (DT_DECIMAL, 10) 数据类型。那没有用。我试图检查一个空值,如果为空,则用 0 替换,这不起作用。所以我只是一起忽略了该列,在派生列任务中,我用(DT_DECIMAL, 10) 0 替换了 tlost 列值,只插入一个 0 值并忽略 xml 文件中的任何内容,并且作业仍然失败并出现以下错误留言:
错误:加载播放摘要表中的 0xC020F444,XML 源 [1031]:错误“输入字符串的格式不正确。”处理“
XML Source.Outputs[defense].Columns[tlost]”时发生。错误:加载播放摘要表中的 0xC02090FB,XML 源 [1031]:“XML 源”失败,因为发生了错误代码 0x80131537,并且“
XML Source.Outputs[defense]”处“XML Source.Outputs[defense].Columns[tlost]”上的错误行处置指定失败错误。指定组件的指定对象发生错误。错误:加载播放摘要表时出现 0xC02092AF,XML 源 [1031]:XML 源无法处理 XML 数据。管道组件从方法调用返回 HRESULT 错误代码 0xC02090FB。
错误:加载播放摘要表中的 0xC0047038,SSIS.Pipeline:SSIS 错误代码 DTS_E_PRIMEOUTPUTFAILED。 XML Source 上的 PrimeOutput 方法返回错误代码 0xC02092AF。当管道引擎调用
PrimeOutput()时,组件返回失败代码。失败代码的含义由组件定义,但错误是致命的并且管道停止执行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。
请帮忙。我已经用尽了我能想到的一切来解决这个问题。我正在处理数百个文件,并且每次出现此问题时我都无法继续修复错误的数据文件。
【问题讨论】: