2013-11-25 78 views
1

有人幫我嗎?SQL Server集成服務(SSIS) - 如何獲取包錯誤消息?

我在我的包中使用FtpClientConnection發送和接收文件時運行腳本Taks,並且爲了進行一些測試,我正在模擬可能性失敗。

編輯:

當我運行我的腳本任務在調試模式下我有這樣的錯誤消息:「{」 Exceção德HRESULT:0xC001602A 「}」和此錯誤代碼:-1073651670

http://technet.microsoft.com/pt-br/library/ms345164.aspx上尋找此錯誤代碼我發現「請求的FTP操作發生錯誤,詳細的錯誤描述:%1。」

當我的腳本任務拋出錯誤時,我有一個不同的消息:「該腳本返回了失敗結果」。

但是在我的包錯誤中,我的腳本任務中給出了相同的消息:「錯誤:請求的FTP操作發生錯誤詳細的錯誤描述:無法解析服務器名稱或地址

如何在我的包中給出的消息中將此錯誤「Exceçãode HRESULT:0xC001602A」轉換?

清楚了嗎?

在此先感謝...

+0

對於與代碼相關的問題,請提供代碼,否則我們正在浪費彼此的時間 – billinkc

+0

打開pakakage日誌記錄。現在你應該在數據庫中出現這個錯誤。你想用它做什麼? –

+0

我試過打開包日誌記錄,但只是這條消息不保存在數據庫或文本文件中。我不知道爲什麼。我正在編輯我的帖子,並在腳本任務中返回錯誤代碼。 謝謝... –

回答

0

我在互聯網上找到這個代碼,但我不知道爲什麼,當我在調試模式下運行它,我得到這個消息:「Exceção德HRESULT:0xC001602A」和一個SQL作業我得到這個:「請求的FTP操作發生錯誤詳細的錯誤描述:密碼不被允許。」

SSIS是有點瘋狂,但是這工作...

謝謝...

catch (COMException ex) 
{ 
    string symbolicName = GetSymbolicName(ex.ErrorCode); 
    Console.WriteLine("Symbolic Name: {0}", symbolicName); 
} 

public static string GetSymbolicName(int errorCode) 
{ 
    string symbolicName = string.Empty; 
    HResults hresults = new HResults(); 

    foreach (FieldInfo fieldInfo in hresults.GetType().GetFields()) 
    { 
     if ((int)fieldInfo.GetValue(hresults) == errorCode) 
     { 
      symbolicName = fieldInfo.Name; 
      break; 
     } 
    } 

    return symbolicName; 
} 

http://blogs.msdn.com/b/mattm/archive/2009/08/03/looking-up-ssis-hresult-comexception-errorcode.aspx

0

由於這幫了我,我想用VB貢獻回.Net版以上C#:)

Catch ComEx as COMException 
    Console.WriteLine("Symbolic Name: {0}", GetSymbolicName(ComEx.ErrorCode)) 
End Try 

Public Shared Function GetSymbolicName(ByVal errorCode As Long) As String 
    Dim symbolicName As String = String.Empty 
    Dim hresults As HResults = New HResults 
    Dim thisError As Integer = Int32.Parse(errorCode.ToString) 

    For Each fieldInfo As FieldInfo In hresults.GetType().GetFields() 
     If Int32.Parse(fieldInfo.GetValue(hresults).ToString) = thisError Then 
      symbolicName = fieldInfo.Name 
      Exit For 
     End If 
    Next 

    Return symbolicName 
End Function 

只是一個警告,我實際上做了兩行函數調用(每個C#),但我想不出一個理由不要在一行中使用函數調用Console.Writeline。

相關問題