2013-07-17 40 views
7

我正在嘗試使用C#以編程方式執行SSIS包。以編程方式和從命令行(DTEXEC)運行SSIS包故障

Application app = new Application(); 
Package package = app.LoadPackage(pkgFullPath, null); 
package.Execute(); 

我收到一個錯誤說:

Error in Microsoft.SqlServer.Dts.Runtime.TaskHost/SSIS.Pipeline : To run a SSIS package outside of SQL Server Data Tools you must install Conditional Split of Integration Services or higher. 

Error in Microsoft.SqlServer.Dts.Runtime.TaskHost/SSIS.Pipeline : To run a SSIS package outside of SQL Server Data Tools you must install Lookup of Integration Services or higher. 

我在Visual Studio 2010中使用SSIS,但在VS 2012從NUnit測試執行的C#代碼(運行.NET 4.0)

如果我使用調試(按F5)啓動它,該包在VS 2010中的SSIS項目中運行良好,但如果我嘗試使用命令行中的dtexec運行它,則會失敗並顯示相同的錯誤(同樣在32和64位版本的dtexec)。它也失敗,如果我從Visual Studio中使用CTRL + F5啓動它(沒有調試)

我發現在線文章,表明它與64位v 32位問題有關,但我看到運行這兩個版本的dtexec時出現同樣的錯誤。我正在使用dtexec的版本11.0.2100.60,它與VS 2010中的SQL Server Integration Services設計器的版本相匹配。

如果我在沒有條件拆分和查找的情況下運行簡單包,則不會收到錯誤。爲了在Visual Studio之外運行,我需要額外安裝一些東西嗎?

任何想法?

+1

你確定集成服務安裝正確?BIDS和SSDT將能夠執行包。如果你想使用DTEXEC或以編程方式運行,必須安裝集成服務。 檢查服務,您的系統上運行。如您的方案,「SQL Server集成服務」要麼不會在那裏還是處於停止狀態。 – Akshay

+0

包屬性,你嘗試過調整Run64BitRuntime財產?[參考] (http://goo.gl/QjhgFp) –

+0

謝謝你們,我希望其中的一些想法可能對你有所幫助r有類似問題的其他人。但是,我的項目最終走向了一個不同的方向,因此我不再需要嘗試新的解決方案。 – TGH

回答

2

這是VB代碼,但可以很容易地轉換爲C#。 嘗試運行執行SSIS包的SQL命令。

喜歡的東西:

Try 
    'Job implementation goes here 
    Dim jobConnection As System.Data.SqlClient.SqlConnection 
    Dim jobCommand As SqlCommand 
    Dim jobParameter As SqlParameter 
    Dim jobReturnValue As SqlParameter 
    Dim jobResult As Integer 


    jobConnection = New System.Data.SqlClient.SqlConnection(SSISConnectionString) 
    jobCommand = New SqlCommand("msdb.dbo.sp_start_job", jobConnection) 
    jobCommand.CommandType = CommandType.StoredProcedure 

    jobReturnValue = New SqlParameter("@RETURN_VALUE", SqlDbType.Int) 
    jobReturnValue.Direction = ParameterDirection.ReturnValue 
    jobCommand.Parameters.Add(jobReturnValue) 


    jobParameter = New SqlParameter("@job_name", SqlDbType.VarChar) 
    jobParameter.Direction = ParameterDirection.Input 
    jobCommand.Parameters.Add(jobParameter) 
    jobParameter.Value = packageName 

    jobConnection.Open() 
    jobCommand.ExecuteNonQuery() 
    jobResult = DirectCast(jobCommand.Parameters("@RETURN_VALUE").Value, Integer) 

    jobConnection.Close() 


    Select Case jobResult 
     Case 0 
      'Successful run 
     Case Else 
      Throw New Exception("SQLAgent Job failed to start!") 
    End Select 


Catch ex As Exception 
    Return ex 
End Try 
1

根據微軟Install Integration Services網頁:

「一些SQL Server組件可以安裝在安裝嚮導的功能選擇頁面上選擇安裝一個部分子集這些組件對特定任務很有用,但Integration Services的功能將受到限制。例如,數據庫引擎服務選項安裝SQL Server導入和導出嚮導所需的Integration Services組件。工具選擇安裝設計包所需的Integration Services組件,但未安裝Integration Services服務,並且無法在SQL Server數據工具外運行包。爲確保Integration Services的完整安裝,您必須在Feature Selection頁面上選擇Integration Services。「

這就是爲什麼您可以從Microsoft工具內部運行SSIS包,但不能從這些工具之外運行的奇怪之處僅在於某些類型的組件

如果您在該頁面上關注完整安裝的集成服務組件,請解決該問題。

「對於集成服務的一個完整的安裝,使用的工具和用於開發和管理包,選擇這兩個集成服務文檔和下面的共享功能在一起:

  • SQL Server數據工具安裝工具設計包裝。
  • 管理工具 - 完成安裝SQL Server Management Studio中 管理軟件包。
    • 客戶端工具SDK安裝管理組件 爲整技術n服務編程。

相關問題