我正在使用C#执行SQL Server 2000 DTS包,方法是遵循本文http://support.microsoft.com/kb/319985中的代码。一旦包执行,我循环每一步,找出是否有任何步骤失败,如果失败则获取有关错误的信息。我还使用此信息来确定包是否成功(如果任何步骤失败,则包失败)。 我在这里面临的问题是,有时包失败(跳转到catch块)时会出现“执行被用户取消”的一般错误消息,并且不会提供更多信息。如果我使用DTSRUNUI手动运行包,那么我发现包期望文本文件作为输入,并且文件在指定位置不存在。在这种情况下,来自.NET代码的错误消息应该清楚地说明。我是否需要对文章中的代码进行任何更改,以获取有关错误的更多详细信息。我添加了以下额外内容以获取错误信息,但没有多大帮助。包上有两个名为“FailonError”的属性,步骤对象上有“ExecuteInMainThread”。我也尝试过设置它们,但这也无济于事。不确定是否需要它们。
bool success = true;
if (package != null)
{
foreach (Step step in package.Steps)
{
if (step.ExecutionStatus == DTSStepExecStatus.DTSStepExecStat_Completed
&& step.ExecutionResult == DTSStepExecResult.DTSStepExecResult_Failure)
{
int errorCode, helpContext;
string errorSource, errorDescription, helpFile, iDofInterfaceWithError;
step.GetExecutionErrorInfo(out errorCode, out errorSource, out errorDescription, out helpFile,
out helpContext, out iDofInterfaceWithError);
LogToTextFile(
string.Format(
"step name: {0} error Code : {1}, error Source : {2}, error Description: {3}", step.Name,
errorCode, errorSource, errorDescription));
success = false;
}
}
}
答案 0 :(得分:0)
我正在使用DTSRun.EXE来执行DTS包(通过从C#启动进程)并将其控制台输出重定向到文件,并且在出现任何错误时该输出通常就足够了。