Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何在SQL Server 2014标准环境上运行2008R2 SSIS包?_Sql Server_Ssis - Fatal编程技术网

Sql server 如何在SQL Server 2014标准环境上运行2008R2 SSIS包?

Sql server 如何在SQL Server 2014标准环境上运行2008R2 SSIS包?,sql-server,ssis,Sql Server,Ssis,目前,我有一个.NET应用程序正在执行2008R2 SSIS包,该应用程序正在win server 2008R2(64位)上运行。这些包是在2008年建造的。之后,我将数据库服务器从SQL2008R2升级到SQL2014标准(在Win server 2012R2上运行),并将.NET应用程序部署到新环境中 现在,我遇到了从.NET应用程序调用包的问题。消息错误为错误:无法加载文件或程序集“Microsoft.SqlServer.Dts.DTSRuntimeWrap.dll,Version=10.

目前,我有一个.NET应用程序正在执行2008R2 SSIS包,该应用程序正在win server 2008R2(64位)上运行。这些包是在2008年建造的。之后,我将数据库服务器从SQL2008R2升级到SQL2014标准(在Win server 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\Assembly中分配的Microsoft.SQLServer.DTSRuntimeWrap和Microsoft.SQLServer.ManageDDT

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\Assembly中分配。我猜每当执行包时,它也需要一些旧的.dll版本10.0.0.0的函数来执行它们的组件(执行SQL任务、任务脚本等等),但是这些.dll在新环境中不存在,并且会导致错误

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


非常感谢,

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

  • 将所有软件包升级到2014年,这可能与打开一样简单 将其保存在SSDT-BI 2014中(不在项目模型中 但作为独立软件包)。这是值得怀疑的,任何代码将被删除 从R2到2014年,有许多改进,而不是根本性的改变
  • 或者在服务器上再次安装SSIS 2008R2 并让您的.NET应用程序从正确的文件夹调用DTEXEC。 i、 e.在我的机器上,它位于C:\Program Files\Microsoft SQL中 服务器\100\DTS\Binn\DTExec.exe。您还可以更改路径 变量,以确保2008 dtexec位于2014之上

  • 这些链接可能会有所帮助。。在我的例子中,.Net应用程序是通过C代码执行包的,而不是使用DTEXEC。我怀疑无论何时执行我的包,都需要旧版本(10.0.0.0)的某些组件。安装2008r2版本的ssis仍然可以解决您的参考问题。升级时,您更换了这些程序集。如果我在新服务器(2014标准)上安装2008r2 SSIS,许可证如何?我不确定。您的许可证应允许您在同一台服务器上拥有多个实例,而无需额外费用。这应该是带有两个冒号的@[User::TextQualifier]。我认为您需要在这里开始一些新的线程:)