程序集重定向不适用于SSIS脚本任务

时间:2017-11-20 11:42:07

标签: sql-server ssis script-task assembly-binding-redirect ssis-2016

我们要求某些SSIS包需要在多个SQL Server版本(2014和2016)上运行,而无需维护2个版本的代码库。

我已经构建了一个包装器C#控制台应用程序,它在配置中有程序集重定向(如下所示),后来调用Package.Execute方法来执行DTSX文件。

我收到以下错误,告诉我机器上找到的最新版本的Microsoft.SqlServer.ScriptTask程序集正在加载。目前该机器目前有v12,13和14组件。我需要使用v13,因为我的目标是SQL Server 2016。

为什么会这样做以及如何正确“解决”它的任何想法?

错误

  

CS1705 - 程序集'Microsoft.SqlServer.ScriptTask,Version = 14.0.0.0,Culture = neutral,PublicKeyToken = 89845dcd8080cc91'使用'Microsoft.SqlServer.ManagedDTS,Version = 14.0.0.0,Culture = neutral,PublicKeyToken = 89845dcd8080cc91'具有比引用的程序集“Microsoft.SqlServer.ManagedDTS,Version = 13.0.0.0,Culture = neutral,PublicKeyToken = 89845dcd8080cc91”

更高的版本

在控制台应用配置中重定向

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.SqlServer.ScriptTask" publicKeyToken="89845dcd8080cc91" culture="neutral" />
        <bindingRedirect oldVersion="10.0.0.0-14.0.0.0" newVersion="13.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.SqlServer.ManagedDTS" publicKeyToken="89845dcd8080cc91" culture="neutral" />
        <bindingRedirect oldVersion="10.0.0.0-14.0.0.0" newVersion="13.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.SqlServer.DTSRuntimeWrap" publicKeyToken="89845dcd8080cc91" culture="neutral" />
        <bindingRedirect oldVersion="10.0.0.0-14.0.0.0" newVersion="13.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.SqlServer.DTSPipelineWrap" publicKeyToken="89845dcd8080cc91" culture="neutral" />
        <bindingRedirect oldVersion="10.0.0.0-14.0.0.0" newVersion="13.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.SqlServer.PipelineHost" publicKeyToken="89845dcd8080cc91" culture="neutral" />
        <bindingRedirect oldVersion="10.0.0.0-14.0.0.0" newVersion="13.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>   </runtime>

2 个答案:

答案 0 :(得分:0)

您无法使用特定SQL Server版本设计的程序包使用不同的版本DLL运行。当包升级到更高版本时也是如此。你不能在较低版本中执行它。

不会针对类似案例进行程序集绑定重定向。因为类和对象的版本不同。

答案 1 :(得分:0)

对于SQL Server 2016,您必须至少将newversion的{​​{1}}属性更改为Microsoft.SqlServer.ManagedDTS(并且还可能更改为其他14.0.0.0属性)

newversion