【问题标题】:SSIS XML Source Error - Input string was not in a correct formatSSIS XML 源错误 - 输入字符串的格式不正确
【发布时间】: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() 时,组件返回失败代码。失败代码的含义由组件定义,但错误是致命的并且管道停止执行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。

请帮忙。我已经用尽了我能想到的一切来解决这个问题。我正在处理数百个文件,并且每次出现此问题时我都无法继续修复错误的数据文件。

【问题讨论】:

    标签: sql xml package ssis-2012


    【解决方案1】:

    你可以试试这些

    1 - 在 xsd 中将数据类型更改为字符串,然后在加载到表之前处理数据类型转换。 2 - 如果可能,通过传递您的 xml 生成 xsd,然后验证数据类型并相应地使用它...

    xsd 的其余部分可以相应更改...

    下面是我尝试过的屏幕截图。希望对你有帮助]1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-19
      相关资源
      最近更新 更多