2011-05-26 4 views
1

J'ai créé un package qui prend une variable du fichier batch et l'utilise pour l'exécution.Passage de la variable du fichier batch au package SSIS

Je l'envoie du fichier batch comme:

Sortie% Sortie%

et de sortie ensemble de Exécuter processTask mais ne pas être en mesure d'y accéder plus loin.

Aidez s'il vous plaît.!

+1

Il est difficile de comprendre ce que votre problème. Vous devrez expliquer votre problème un peu mieux. Comment invoquez-vous votre fichier bat. Exit est une commande pour quitter l'exécution du cmd actuel, c'est ce que vous voulez? –

Répondre

3

Je pense que vous devriez echo la variable% sortie% au lieu d'utiliser avec commande de sortie.

L'exemple suivant montre comment passer une chaîne de fichier batch à SSIS:

  1. Screenshot # 1 montre le contenu du fichier batch utilisé dans cet exemple.
  2. La capture d'écran # affiche la configuration Execute Process Task. La variable BatchOutput est de type chaîne.
  3. Capture d'écran # 3 montre que le groupeSuccess Script est ajouté après le lot exécution du processus de travail.
  4. Dans la tâche de script, j'ai le code affiché sous la section Code de tâche de script pour afficher le contenu de la variable BatchOutput.
  5. L'exécution de la tâche devrait montrer le contenu de la variable, qui est en fait le texte renvoyé par le fichier batch. référez la copie d'écran # .

Script Code de travail:(Utilisez le code ci-dessous pour remplacer la méthode Main() dans votre tâche de script)

VB code méthode Main() qui peut être utilisé dans SSIS 2005 and above

Public Sub Main() 
    Dim varCollection As Variables = Nothing  

    Dts.VariableDispenser.LockForRead("User::BatchOutput") 
    Dts.VariableDispenser.GetVariables(varCollection) 

    MessageBox.Show(varCollection("User::BatchOutput").Value.ToString()) 

    Dts.TaskResult = ScriptResults.Success 
End Sub 

C# code méthode main() qui peut être utilisé uniquement dans SSIS 2008 and above .

public void Main() 
{ 
    Variables varCollection = null; 
    Dts.VariableDispenser.LockForRead("User::BatchOutput"); 
    Dts.VariableDispenser.GetVariables(ref varCollection); 

    MessageBox.Show(varCollection["User::BatchOutput"].Value.ToString()); 
    Dts.TaskResult = (int)ScriptResults.Success; 
} 

Hope that helps.

écran # 1:

1

écran # 2:

2

écran # 3:

3

Screenshot # 4:

4

+0

Merci beaucoup pour l'aide ... mais ne voyait aucune capture d'écran ici ... – Amruta

+0

Oui.! It Worked. Merci encore Siva. !!! – Amruta

+0

Je suis incapable d'exécuter un autre fichier de commandes par le même code ... Peut-on trouver une erreur dans le fichier batch ??? fichier de commandes est: @echo off dtexec/f "D: \ CHORD_LOAD_PACKAGE \ CHORD_LOAD_PACKAGE \ LOAD_SECURITY.dtsx"/RAPPORT E> D: \ Loagfile.log if% ERRORLEVEL% == 1 set% sORTIE% = "S" si% ERRORLEVEL%! = 1 jeu% sORTIE% = "F" echo "EXCEL" exit 0 – Amruta

Questions connexes