使用SQL Server2014。我有一个脚本任务,该任务通过WinSCPnet.dll程序集下载文件,在这里我试图通过catch块中的FireError()将错误记录到SSIS日志中。不幸的是,当程序到达FireError()时,它只是挂起而没有失败或没有任何消息。我没有遵循MSDN上提供的示例(请参见下面的代码),但没有成功。谁能帮忙吗?
注意:我有一个FireInformation()事件,该事件在成功下载后将起作用。
public void Main()
{
// Set variable declaration(s).
string strTaskName = (string)Dts.Variables["System::TaskName"].Value; // Has been selected as read-only.
SessionOptions sessionOptions = new SessionOptions
{
// Set SessionOptions here
};
try
{
using (Session session = new Session())
{
// Create error here by downloading a file from a folder path that does not exist.
foreach (TransferEventArgs transfer in transferOperationResult.Transfers)
{
// Print results to SSIS log. The FireInformation() works here.
Dts.Events.FireInformation(0, string.Format("Script Task {0}", strTaskName), string.Format("Download of file {0} succeeded.", transfer.FileName), null, 0, ref fireAgain);
}
}
Dts.TaskResult = (int)ScriptResults.Success;
}
catch (Exception ex)
{
// Print results to SSIS log. The program hangs here without message.
Dts.Events.FireError(0, string.Format("Script Task {0}", strTaskName), ex.Message, null, 0);
Dts.TaskResult = (int)ScriptResults.Failure;
}
}
答案 0 :(得分:0)
发现了问题。我有一个OnError事件处理程序设置,可以在任何任务失败时发送电子邮件。问题源于“发送邮件任务”选择了错误的连接管理器这一事实。我通过逐字地运行逻辑链上的每个任务(即右键单击+执行任务)来发现问题,从而发现了问题,并在“发送邮件任务”处结束,该消息告诉我找不到连接管理器。
奇怪的是,当试图运行整个程序包时,SSIS调试器未在执行结果中报告相同的错误。我不知道这是正常/预期的行为。脚本任务,错误事件处理程序和发送邮件任务之间可能存在错误?