【问题标题】:The attribute 'name' already exists DTSX XSD属性\'name\'已经存在 DTSX XSD
【发布时间】:2022-11-30 09:58:16
【问题描述】:

我有几十个 SSIS 包,从各种来源提取了大量的列。每当源数据发生变化时,我需要能够看到哪个 SSIS 包受到影响,手动维护开始变得困难起来。

因此,我想读取存储为.dtsx文件的SSIS包来检索相关信息:

  • 输入和输出列的名称和类型
  • 源和目标表名
  • 使用的连接类型

Microsoft 在线提供此 DTSX 格式的 XSD:Appendix A: Full DTSX XSD,我想我可以使用 xsd 'myfile'.xsd /classes /language:vb 创建一个 vb.net 类。

但是,首先查看 Visual Studio 中的 .xsd,我多次面临相同的警告:

属性“名称”已存在。

我已确保所有引用的 .xsd 都具有正确的命名并且位于正确的文件夹中。

当尝试在 Visual Studio 命令提示符下使用 xsd 命令时,类实际上被写入,但我收到警告:

架构验证警告:属性“名称”已存在。 971 行,位置 8。
架构验证警告:属性“名称”已存在。 990 行,位置 8。
架构验证警告:属性“名称”已存在。 997行,位置8。
架构验证警告:属性“名称”已存在。 1607 行,位置 14。
架构验证警告:属性“名称”已存在。 1620 行,位置 14。
架构验证警告:属性“名称”已存在。 1673 行,位置 14。
警告:无法验证架构。类生成可能会失败或可能会产生不正确的结果。

以上有什么问题吗?是否有任何解决方法来解决这些警告?

【问题讨论】:

    标签: xml vb.net ssis xsd


    【解决方案1】:

    如果代码编译正确并且适合您的目的,那么我认为现在可以忽略。警告是由于模式文件本身的错误而产生的,所以不是你造成的。

    如果您通过 XSD 验证器(如 Xerces)运行完整的 DTSX 模式,您会得到确切的错误,这些错误似乎与 XSD.exe 在您自己的输出中生成的警告相对应:

    • 类型错误 '管道组件属性类型'.指定了具有相同名称和目标名称空间的重复属性使用。重复属性使用的名称是 '姓名'.
    • 类型错误 '管道组件输出属性类型'.指定了具有相同名称和目标命名空间的重复属性使用。重复属性使用的名称是 '姓名'.
    • 类型错误 '管道组件输入属性类型'.指定了具有相同名称和目标命名空间的重复属性使用。重复属性使用的名称是 '姓名'.
    • 类型错误 'PipelineComponentInputColumnPropertyType'.指定了具有相同名称和目标命名空间的重复属性使用。重复属性使用的名称是 '姓名'.
    • 类型错误 'PipelineComponentOutputColumnPropertyType'.指定了具有相同名称和目标名称空间的重复属性使用。重复属性使用的名称是 '姓名'.

    所以问题基本上是这样的:管道上面提到的类型使用包含“名称”属性的属性组,但这些相同的类型也在本地定义另一个使用不同类型的也称为“名称”的属性。这是突出显示重复“名称”属性的问题的图表:

    如果你愿意,你可以尝试自己修复模式,方法是创建另一个副本“DTS:管道组件属性属性组”属性组并删除“名称”属性并在报告警告的所有 PipeLine 类型上使用该属性,但很难说出 Microsoft 的意思。

    也许他们打算覆盖“DTS:管道组件属性属性组”名称属性与本地定义的?或者也许存在“DTS:管道组件属性属性组”属性组不正确,它不应该存在。很难说清楚,除非非常熟悉 DTSX 工具的工作原理,或者有一个现有的 DTSX 文件可能表明“名称”属性的正确使用方式。

    【讨论】:

      猜你喜欢
      • 2014-01-14
      • 1970-01-01
      • 2020-02-27
      • 2021-11-03
      • 1970-01-01
      • 2011-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多