SQL Server集成服务(SSIS) - 如何获取程序包错误消息?

时间:2013-11-25 18:12:25

标签: ssis

有人帮助我吗?

我在我的程序包中运行Script Taks,用于使用FtpClientConnection发送和接收文件,并进行一些测试,我模拟可能的操作失败。

编辑:

当我在调试模式下运行脚本任务时,我收到以下错误消息:“{”ExceçãodeHRESULT:0xC001602A“}”,此错误代码: -1073651670

http://technet.microsoft.com/pt-br/library/ms345164.aspx上查找此错误代码我发现“请求的FTP操作中发生错误。详细错误说明:%1。”

当我的脚本任务抛出错误时,我有另一条消息:“脚本返回了失败结果”。

但是在我的包错误中,我在脚本任务中给出了相同的消息:“错误:请求的FTP操作中发生错误。详细的错误描述:服务器名称或地址无法解析

如何在我的包裹发出的消息中转换此错误“ExceçãodeHRESULT:0xC001602A”?

这是清楚的吗?

提前致谢...

2 个答案:

答案 0 :(得分:0)

我在互联网上找到了这个代码,但我不知道为什么当我在调试模式下运行时我得到这样的消息:“ExceçãodeHRESULT: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

答案 1 :(得分:0)

由于这有助于我,我想用上述C#的VB.Net版本回馈:)

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。