现有的SSIS包突然无法验证自定义组件XML

时间:2018-04-30 19:39:27

标签: sql-server ssis

我们一直在使用和运行SQL Server 2014的SSIS包,其中包含自我到达工作地点之前使用过的自定义组件。我们升级到2017年的Visual Studio,并且已经好几个月了。最近 - 可能与最近的更新一致 - Visual Studio ssdt无法加载这些包,因为有关验证这些组件背后的xml的错误。这些包继续在服务器上运行,并且使用这些自定义组件创建新包仍然可以按预期工作。这些包仍然在Visual Studio 2013中打开。我们已经在代码控制中回到了同一个包的早期版本。重新安装早期版本的Visual Studio,将ssdt工具安装为独立工具,但似乎没有任何工作。

由于无法加载作为这些组件定义的一部分的值,以及在优先约束中对这些组件的错误引用,因为首先无法加载这些组件,因此存在一些错误或错误,例如:< / p>

Error loading CCMI Call Import.dtsx: Error loading value "<DTS:ForEachEnumerator xmlns:DTS="www.microsoft.com/SqlServer/Dts" DTS:CreationName="FolderEnumerator" DTS:DTSID="{FACFAC12-F5E1-4BFE-9768-BF73D8053550}" DTS:ObjectName="{FACFAC12-F5E1-4BFE-9768-BF73D8053550}"><DTS:PropertyExpression DTS:Name="Directory">@" from node "DTS:ForEachEnumerator". C:\Users\..Call Import.dtsx 1

当我在优先约束中删除对自定义组件的所有引用时,它将尝试加载包而不包含&#34;损坏的&#34;但是因为这些自定义组件是容器,在某些情况下,这会遗漏大部分已完成的工作。我已经删除了其中一些&#34;坏&#34;它不能加载到云雀上的值,但是在删除之前在错误中引用的属性后,它仍会在仍与容器关联的下一个属性上出错。

我无法打开软件包,因此我无法将组件复制并粘贴到新软件包中。

有人有什么想法吗?

1 个答案:

答案 0 :(得分:0)

在对这些自定义组件的XML进行一些研究之后,我能够解决一些问题,并希望分享以防它帮助某人,尽管我怀疑我遇到的完全相同的问题会影响到许多其他人。 / p>

我没有收到自定义foreach循环容器的任何有用的错误消息,但是当我尝试将它从工作的VS 2013屏幕复制到VS 2017时,我终于得到一个错误说明类似的东西(丢失了确切的引用)“缺少服务器目标版本的属性”。然后我发现有效的自定义组件的工作示例使得该节点在XML中被遗漏了“被破坏”:

<TargetServerVersion
          Type="3"
          Value="120" />

我添加了缺少的属性,并将值从140更改为120(我们实际定位的版本),它开始正常工作。

通过类似的过程修复了另一个自定义目标,尽管错误完全不同。在这种情况下,程序包实际上会打开而不会出错,但自定义目标将无法正常运行(并且也不再具有自定义图标)。我使用自定义组件创建的工作包有一个XML,在这种情况下类似于损坏包的XML。直到我在一个新项目中创建了一个新软件包,我才立即设置了正确的目标服务器,我可以看到破解代码和工作软件包代码之间的XML有任何变化,就是这样:

2017版本的组件具有更长的“UserComponentTypeName”属性定义:

<properties>
            <property
              dataType="System.String"
              name="UserComponentTypeName">Konesans.Dts.Pipeline.TrashDestination.Trash, Konesans.Dts.Pipeline.TrashDestination, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b2ab4a111192992b</property>
          </properties>

2016年的正确版本(我知道,与上一个软件包不同)有一个更简单,更简单的定义:

<properties>
            <property
              dataType="System.String"
              name="UserComponentTypeName">Konesans.TrashDestination</property>
          </properties>

当我用更短的定义替换属性时,它工作正常。

我不知道这些确切问题会出现多久,但在搜索我的问题的解决方案时我没有看到这样的事情,并且认为某人有一个与XML有关的不同但相关的问题(可能是某人)不小心升级软件包版本?)它可能有助于为创作过程增加一些火花并节省一些时间。

相关问题