使用DTSRuntimeWrap版本11和VisualStudio 2012从C#控制台应用程序调用本地SSIS包

时间:2016-09-06 18:00:56

标签: c# sql-server-2008 visual-studio-2012 ssis

我最近发布了一个类似的问题here。我在某种程度上根据我从Ferdipux收到的非常有用的输入来改进我的问题(见评论)。简而言之,我正在尝试从C#控制台应用程序运行本地SSIS包(即,不是部署到SQL Server的包)。 SSIS包和控制台应用程序都是使用.Net 4.5.1在VisualStudio 2012中构建的。相关的代码如下:

string pkgLocation = @"C:\Users\06717\Documents\Visual Studio 2012\Projects\RMA_Data_Cleanup\RMA_Data_Cleanup\";
        string pkgName = "Package.dtsx";
        Application app = new Application();
        Package pkg = new Package();
        DTSExecResult pkgResults = new DTSExecResult();
        try
        {
            DtsEvents events = new DtsEvents();
            pkg = app.LoadPackage(pkgLocation + pkgName, events);

我被卡在app.LoadPackage线上,发现我需要卸载我在机器上安装的SQL Server 2008客户端部分。但是,现在当我运行应用程序时,我只能到达该行:

Application app = new Application();

当我尝试运行此行时,我收到错误消息:“无法加载文件或程序集'Microsoft.SqlServer.DTSRuntimeWrap,Version = 10.0.0.0,Culture = neutral,PublicKeyToken = 89845dcd8080cc91'或其依赖项之一。该系统找不到指定的文件。”我的机器上有一个版本的DTSRuntimeWrap,但它的版本是11,而不是版本10.我怀疑在卸载SQL Server 2008时版本10被删除。这是正确的吗?如果是这样,我如何更改我的代码,以便我可以使用DTSRuntimeWrap dll的版本11?或者这是不可能的,我是否需要将SSIS包部署到SQL Server并按照here所述运行它(注意这表明它适用于SQL Server 2012)?

2 个答案:

答案 0 :(得分:0)

我会写评论,但我没有声名。

我曾遇到过类似的问题。 SSIS可以很容易地运行依赖地狱,所以请确保您的dev机器安装了与您计划部署的SQL Server版本相同的SQL-Server版本。

您是否尝试删除运行SSIS所需的所有引用,然后将其重新引用到您的项目中?如果Visual Studio不提供它们,您可以查看SQL-Server 2012安装文件夹。

答案 1 :(得分:0)

如前所述,在SSIS 2008卸载后 - 检查VS项目中的SSIS dll引用是否为dll版本。如果引用过时的版本 - 删除此引用并再次添加 - 它将使用当前的dll添加它,它将具有正确的版本。