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