2017-10-21 204 views
2

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

“脚本组件,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上不安装集成服务的情况下完成此任务。

在此先感谢

+0

会有什么用? https://social.msdn.microsoft.com/Forums/sqlserver/en-US/75f85ed9-7bda-451d-83eb-758a34f0ec83/ssis-custom-component-the-performupgrade-method-failed?forum=sqlintegrationservices – Alex

回答

0

没有集成服务不是导致此错误。看起来你的软件包正在加载一些东西,试图将它们升级到你使用的任何sql服务器版本。在升级到更新版本的SSIS甚至有时SQL Server时,我已经看到了这一点。