2

我们使用 Biml 生成包含 Xml 源的 SSIS 包,以从 Xml 文件中获取数据。然而,这个生成的 XML 源包含一个名为“Data_Id”的列,即使 XSD 和 XML 都没有这个列。运行包时会产生错误。

我对 Biml 和 C# 没有太多经验。

我们使用一个变量来获取 Xml 文件的名称(包括创建 Xml 的日期和时间)并固定 XSD 模式文件,这些文件指定要从每个包的 Xml 文件中检索的列。

Xml 文件仅包含 1 个名为“Data”的节点,其中包含所有元素。

我尝试在输出路径和输入路径上将 Data_Id 列的 ErrorRowDisposition 设置为 IgnoreFailure 和 RedirectRow,但这没有帮助。我也尝试在 Columns 列表中包含属性 IsUsed="false" 的 data_id 列,但这没有任何作用。

我们使用以下 Biml 代码来生成包中的 Xml 源:

<XmlSource Name="XML Source" ValidateExternalMetadata = "false">
 <FileNameFromVariableInput VariableName="User.XMLfullPath"/>
 <XmlSchemaFileInput ConnectionName="XSD_for_<#=curTableRow["SourceTableName"]#>"/>
 <Columns>
   <Column SourceColumn="Column2_NAME" IsUsed="false"></Column>
 </Columns>
</XmlSource>

但是,当生成包时,Xml 源包含一个“Data_Id”列,该列未在 XSD 模式文件和 XML 文件中指定。

只有在 Xml 源上选择高级编辑器时才能看到此列,打开 Xml 源后单击确定时会消失。当您通常通过双击打开 Xml 源时,您看不到 Data_Id 列。

当包运行时,此 Data_Id 列会导致错误消息:“Data_Id 没有到 XML 架构的映射”。

然而,我们希望生成包,而不必打开每个包和每个包中的 Xml 源以使其工作。

一些谷歌搜索显示,当 Xml 包含多个节点时,SSIS 中的 Xml 源会自动创建类似的“_Id”列,以便以后可以将这些节点连接在一起。但是,由于我们的 Xml 文件仅包含 1 个节点(数据),因此不应生成此 Data_Id 列,但仍然存在于 Biml 生成的 SSIS 包中。

以前有没有人遇到过这个问题和/或知道如何解决它?

4

0 回答 0