2010-10-20 3 views
0

Я выполняю пакет 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; 
     } 
    } 
} 

ответ

0

Я использую DTSRun.EXE для выполнения пакета DTS (запуская процесс от C#) и перенаправлять его консольный вывод в файл и выход, как правило, достаточно, в случае каких-либо ошибок.