我在装有集成服务的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上安装集成服务。

提前致谢

最佳答案

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

关于c# - 在没有安装集成服务的情况下从C#执行SSIS包,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46861204/

10-09 12:51