2016-09-30 107 views
3

我在vs 2015中使用集成服務項目創建了SSIS包。 使用數據源連接建立成功。我可以使用執行包實用程序和命令行成功執行包。 請檢查下面的屏幕截圖。 Execute package successfully 我在使用c#執行相同的包時遇到問題。 無法執行包。 我應用了eventlistener,得到了以下錯誤。 請在下面的幾張截圖中找到更多信息。 Error on execute using c# code使用c#執行包SSIS失敗

代碼以供參考:

Application app = new Application(); 
Package pkg = app.LoadPackage(@"C:\Project\Sample\Package1.dtsx", listener); 
DTSExecResult results = pkg.Execute(null, null, listener, null, null); 

在結果反對我買了給定的錯誤失敗。

+0

基本上你在做什麼「數據流任務」?如果包在BIDS中運行,包是否成功運行? –

+0

我是SSIS的新手,我的要求是通過SSIS從Hadoop中獲取數據,我成功地在UI上顯示數據並使用c#執行某些操作。我可以在Visual Studio中使用集成服務項目預覽我的數據。並能夠運行也。但是一旦創建了dtsx文件並且我在pkg.execute行上發生了錯誤。 Actaully我不知道什麼是數據流任務錯誤 – Pratik

回答

1

正如@Tab Alleman所說,您可以通過調用啓動SQL Agent JOB的C#中的存儲過程sp_start_job運行該程序包。

下面的一段代碼,可以是幫助在這種類型的方法,創建SQL代理作業後:

SqlConnection Conn = new SqlConnection(YOURCONNECTION); 

SqlCommand ExecuteJob = new SqlCommand(); 
ExecuteJob.CommandType = CommandType.StoredProcedure; 
ExecuteJob.CommandText = "msdb.dbo.sp_start_job"; 
ExecuteJob.Parameters.AddWithValue("@job_name", YOURJOBNAME") 
ExecuteJob.Connection = Conn; 

using (Conn) 
{ 
    Conn.Open(); 

    using (ExecuteJob) 
    { 
     ExecuteJob.ExecuteNonQuery(); 
    } 
} 

我希望這幫助。

+0

感謝您的這項工作。暫時它會工作。但將來我已經解決了這個問題。如果你有任何解決方案,請讓我知道。 非常感謝 – Pratik

0

不幸的是,您的輸出不顯示確切的錯誤信息。我以前在C#中直接執行包時遇到了問題。

解決此問題的一個方法是創建一個SQL代理作業,執行該程序包,然後從啓動SQL代理作業的C#調用存儲過程。