我有几十个SSIS包,从各种来源提取了许多列。每当源数据发生更改时,我都需要能够看到哪个SSIS包受到影响,并且开始很难手动维护。
因此,我希望阅读存储为.dtsx文件的SSIS包,以检索相关信息:
由于微软为这种DTSX格式在线提供XSD:附录A:完整的DTSX XSD,我想我可以使用xsd 'myfile'.xsd /classes /language:vb创建一个vb.net类。
然而,在第一次查看Visual中的.xsd时,我多次面临相同的警告:
属性'name‘已经存在。
我确保所有引用的.xsd都有正确的命名,并且位于正确的文件夹中。

当尝试在Visual命令提示符中使用xsd命令时,类实际上会被写入,但我会收到一个警告:
架构验证警告:属性'name‘已经存在。第971行,位置8。 架构验证警告:属性'name‘已经存在。第990行,位置8。 架构验证警告:属性'name‘已经存在。第997行,位置8。 架构验证警告:属性'name‘已经存在。第1607行,阵地14。 架构验证警告:属性'name‘已经存在。第1620行,位置14。 架构验证警告:属性'name‘已经存在。第1673行,阵地14。 警告:无法验证架构。类生成可能失败或产生不正确的结果。

上面的话有什么问题吗?有什么办法可以解决这些警告吗?
发布于 2022-11-30 01:58:16
如果代码编译正确,并且为您的目的工作,那么我认为现在可以忽略它。这些警告是由于模式文件本身的错误而产生的,所以不是您。
如果通过XSD验证器(如Xerces)运行完整的DTSX模式,则会得到与XSD.exe在自己的输出中生成的警告相对应的准确错误:
因此,问题基本上是这样的:上面提到的管道类型使用包含“name”属性的属性组,但是这些相同的类型也在本地定义另一个属性,也称为“名称”,它使用不同的类型。下面是突出显示重复“name”属性的问题图:

如果您愿意,可以尝试自己修复模式,方法是创建"DTS:PipelineComponentPropertyAttributeGroup"属性组的另一个副本,并删除“name”属性,并在报告警告的所有PipeLine类型上使用该属性,但是很难知道微软的意思是什么。
也许他们打算用本地定义的属性覆盖"DTS:PipelineComponentPropertyAttributeGroup"名称属性?或者"DTS:PipelineComponentPropertyAttributeGroup"属性组的存在是不正确的,它不应该存在。很难说,除非您非常熟悉DTSX工具的工作方式,或者有一个现有的DTSX文件,该文件可能指示如何正确使用“name”属性。
https://stackoverflow.com/questions/73866153
复制相似问题