如何在SQL Server 2014 Standard环境中运行2008R2 SSIS包?

时间:2014-09-05 09:29:43

标签: sql-server ssis

目前,我有一个.NET应用程序正在执行2008R2 SSIS包,应用程序正在win server 2008r2(64bit)上运行。这些软件包是在BIDS 2008中构建的。之后,我将数据库服务器从SQL2008R2升级到SQL2014 Standard(在Win服务器2012R2上运行),并将.NET应用程序部署到新环境。

现在,我遇到了从.NET应用程序调用包的问题。消息错误是错误:无法加载文件或程序集“Microsoft.SqlServer.Dts.DTSRuntimeWrap.dll,Version = 10.0.0.0,Culture = neutral,Public Key = ...”或其中一个依赖项。试图以不正确的格式加载程序。

步骤1:创建一个.NET简单应用程序来调用包(SSIS 2008)。我还添加了2.dll版本(10.0.0.0)作为参考 在C:\ Program Files(x86)\ Microsoft SQL Server \ 100 \ SDK \ Assemblies

中分配的Microsoft.SQLServer.DTSRuntimeWrap和Microsoft.SQLServer.ManagedDTS
using Microsoft.SqlServer.Dts.Runtime;

using Application = Microsoft.SqlServer.Dts.Runtime.Application;


private void button1_Click(object sender, EventArgs e)
{

try
{

string pkgLocation = @".\Package.dtsx";

Application app = new Application();

Package pkg = app.LoadPackage(pkgLocation, null);

DTSExecResult pkgResults = pkg.Execute();

MessageBox.Show(pkgResults.ToString());

}
catch(Exception ex)
{
MessageBox.Show("ERROR: " + ex.Message);
}
}

步骤2:将此应用程序(包括2.dll,包)部署到新环境并执行它。结果是上面的错误消息。

在新环境中,2 .dll是版本12.0.2000.8在C:\ Program Files(x86)\ Microsoft SQL Server \ 120 \ SDK \ Assemblies中分配。我想每当程序包执行时,它还需要旧的.dll版本10.0.0.0的一些函数来执行它们的组件(执行SQL任务,任务脚本,...)但这些.dll在新环境中不存在而且它导致错误。

那么,除了将SSIS包升级到2014或任何建议之外,我该如何解决这个问题呢?

非常感谢,

1 个答案:

答案 0 :(得分:0)

您的2008R2软件包需要升级到2014年,因为您升级了服务器,而不是并行安装。所以我可以想到两种可能性:

  1. 将所有套餐升级到2014年,这可能就像打开一样简单 他们在SSDT-BI 2014中保存并保存(不在项目模型中) 但作为独立包装)。任何代码都是值得怀疑的 从R2到2014年,与基本变化相比,有许多改进。
  2. 或者再次在服务器上安装SSIS 2008R2 并让您的.NET应用程序从正确的文件夹中调用DTEXEC。 即在我的机器上,它位于C:\ Program Files \ Microsoft SQL中 服务器\ 100 \ DTS \ BINN \ DTExec.exe。您也可以更改路径 变量以确保2008年dtexec位于2014年之上。