2010-10-20 2 views
0

J'exécute un package DTS SQL Server 2000 en utilisant C# en suivant le code de cet article http://support.microsoft.com/kb/319985. Une fois que le paquet est exécuté, je suis en boucle à chaque étape pour savoir si une étape a échoué et obtenir des informations sur l'erreur si elle a échoué. J'utilise également cette information pour savoir si le paquet a réussi ou non (le paquet a échoué si quelqu'un a échoué). Le problème auquel je suis confronté ici est que parfois le paquet échoue (saute pour attraper le bloc) avec un message d'erreur générique que "l'exécution a été annulée par l'utilisateur" et ne donne pas plus d'informations que cela. Si je cours le paquet manuellement en utilisant le DTSRUNUI alors j'ai trouvé que le paquet attendait un fichier texte comme une entrée et le fichier n'existait pas dans l'emplacement spécifié. dans ce cas, le message d'erreur du code .NET devrait le dire clairement. dois-je apporter des modifications au code de l'article, pour obtenir plus de détails sur les erreurs. J'ai ajouté le supplément suivant pour obtenir des informations d'erreur, mais n'a pas beaucoup aidé. Il existe deux propriétés appelées "FailonError" sur le package et "ExecuteInMainThread" sur les objets d'étape. J'ai essayé de les régler aussi, mais cela n'a pas aidé non plus. pas sûr si elles sont requises.Traitement des erreurs dans l'exécution du package DTS à l'aide de .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; 
     } 
    } 
} 

Répondre

0

J'utilise DTSRun.exe pour exécuter le package DTS (en lançant le processus de C#) et rediriger sa sortie de la console au fichier et que la sortie est normalement suffisante en cas d'erreur.

Questions connexes