在没有安装集成服务的情况下从C#执行SSIS包

时间:2017-10-21 07:48:23

标签: c# .net sql-server ssis

我在安装了集成服务的PC上开发了SSIS包。 然后我想开发一个C#winforms应用程序在客户端PC上执行这些包。但客户端PC安装了SQL Server而没有集成服务。 所以我创建了一个C#应用程序并将包添加到它,并添加了对Microsoft.SQLServe.ManagedDTS的引用然后执行了包,结果是一些简单的包被成功执行但复杂的包没有执行给出错误

  

“脚本组件,clsid {33D831DE-5DCF-48F0-B431-4D327B9E785D}”的组件元数据无法升级到较新版本的组件。 PerformUpgrade方法失败。   组件丢失,未注册,无法升级或缺少必需的接口。此组件的联系信息是“包含并运行自定义脚本代码。例如,应用限制”收入“列中有效值范围的业务规则,或者在两列中添加值并计算总和的平均值。 Microsoft Corporation; Microsoft SQL Server; Microsoft Corporation;保留所有权利; http://www.microsoft.com/sql/support;10“。   脚本组件验证失败,返回错误代码0xC0048021。

当我在线上网时,我发现大多数解决方案都是关于是否正确安装集成服务。

我的C#代码winform代码

private void button1_Click(object sender, EventArgs e)
    {
        Package prepartion;
        Package storeLoad;
        Microsoft.SqlServer.Dts.Runtime.Application app;
        DTSExecResult pkgResults;
        Project project = Project.OpenProject(System.Windows.Forms.Application.StartupPath + @"\SSISLoad.ispac");

        project.Parameters["Con1"].Value = sqlServerTextBox.Text;
        project.Parameters["Con2"].Value = "Dsn=mysqlconn";

        prepartion = project.PackageItems["Preperation.dtsx"].Package;
        storeLoad = project.PackageItems["StoreLoad.dtsx"].Package; 

        pkgResults = prepartion.Execute();

        output.Text = pkgResults.ToString();

        pkgResults = storeLoad.Execute();

        output.Text += "\r\n" + pkgResults.ToString();

        foreach (var x in prepartion.Errors)
        {
            output.Text += "\r\n" + x.Description;
        }

        foreach (var x in storeLoad.Errors)
        {
            output.Text += "\r\n" + x.Description;
        }
    }

问题是,因为我的应用程序正在运行的客户端PC上没有安装集成服务?

如果没有在客户端PC上安装集成服务,有没有办法完成这项工作。

提前致谢

1 个答案:

答案 0 :(得分:0)

没有集成服务不是导致此错误的原因。当您的软件包加载时,似乎正在尝试将它们升级到您使用的任何sql server版本。在升级到更新版本的SSIS甚至有时是SQL Server之前,我已经看到了这一点。