Я выполняю пакет DTS SQL Server 2000 с использованием C#, следуя коду из этой статьи http://support.microsoft.com/kb/319985. как только пакет будет выполнен, я прохожу через каждый шаг, чтобы узнать, не прошел ли какой-либо шаг, и получить информацию об ошибке, если он не сработал. Я также использую эту информацию, чтобы узнать, удалось ли пакет или нет (пакет завершился неудачно, если какой-либо шаг завершился неудачно). Проблема, с которой я столкнулся, заключается в том, что иногда пакет терпит неудачу (перепрыгивает на блокировку) с общим сообщением об ошибке, которое «Выполнение отменено пользователем» и не дает больше информации, чем эта. Если я запускаю пакет вручную с помощью DTSRUNUI, тогда я обнаружил, что пакет ожидал текстовый файл в качестве ввода, и файл не существовал в указанном месте. в этом случае сообщение об ошибке из .NET-кода должно четко указывать. мне нужно внести какие-либо изменения в код из статьи, чтобы получить более подробную информацию об ошибках. Я добавил следующие дополнительные сведения, чтобы получить информацию об ошибках, но ничего не помогло. существует два свойства, называемых «FailonError» в пакете и «ExecuteInMainThread» на объектах шагов. Я тоже пытался их установить, но это тоже не помогло. не уверены, требуются ли они.Обработка ошибок в выполнении пакета DTS с использованием .NET
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;
}
}
}