2017-10-21 205 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時,我已經看到了這一點。