Ensemble de résultats SSIS du flux de données à la variable
avant que je me donne une sorte de crise cardiaque liée au stress.
est-ce que quelqu'un sait comment accomplir la tâche apparemment simple de définir l'ensemble de résultats d'une tâche de flux de données (le résultat sera soit un 0 ou un 1) et d'attribuer cette valeur à une variable.
j'ai créé la variable ok.
le jeu de résultats vient d'un fichier XML avec plusieurs éléments. Le drapeau (0 ou 1) est le résultat d'un de ces éléments, donc j'ai aussi besoin de savoir comment obtenir le résultat est juste ce drapeau.
Si quelqu'un pouvait aider, je voudrais vraiment l'apprécier.
mise à jour: j'ai finalement lu le résultat (0,1) de nouveau à SQL Server dans une table de drapeau. Ensuite utilisé un script SQL D'exécution pour le relire à partir du serveur SQL et à une variable. Vous ne savez pas si c'est la meilleure façon de l'avoir fait, mais il semble avoir fait le tour.
2 réponses
Vous pouvez utiliser un composant de script de flux de données pour transférer une valeur de colonne de flux de données à une variable SSIS. Cependant, vous devez suivre certaines règles lorsque vous travaillez avec le composant de script de flux de données et les variables SSIS.
SSIS ne vous permet pas d'assigner des valeurs aux variables SSIS dans la procédure de script qui traite les lignes. Mais il y a des procédures pré - et post-exécution où vous pouvez gérer la tâche.
dans votre composant Script, ajoutez la variable SSIS Propriété ReadWriteVariables. Éditez le script et déclarez une variable dans la classe ScriptMain. Utilisez la procédure Preexécute pour initialiser la variable. Utilisez la procédure ProcessInputRow pour assigner la valeur de la colonne input-buffer à la variable script. Et, utilisez la tâche Postexécute pour assigner la valeur de la variable script à la variable SSIS.
voici un exemple de composant de script VB. Il a une variable SSIS (MyOutVariable) qui obtiendra la sortie de la variable script (Mavar). La variable MyVar obtient sa valeur à partir de la colonne MyNumber dans le flux de données.
Public Class ScriptMain
Inherits UserComponent
Dim MyVar As Integer
Public Overrides Sub PreExecute()
MyBase.PreExecute()
'initialize variable local to data flow
MyVar = 0
End Sub
Public Overrides Sub PostExecute()
MyBase.PostExecute()
' output variable value to SSIS variable
Me.Variables.MyOutVariable = MyVar
End Sub
Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
' logic to get value
MyVar = Row.MyNumber
End Sub
End Class
A partir de SSIS 2012, vous pouvez facilement attribuer une valeur à une variable en utilisant le Tâche D'Expression. Il n'y a pas besoin d'écrire un Script -- ce dont la plupart d'entre nous se méfient, pour accomplir une tâche apparemment simple de définir la valeur d'une variable.
Ex: si j'ai une variable date appelée Today
et je veux lui affecter une valeur, je peux le faire facilement dans le tâche D'Expression comme le montre la dessous.
Autres Lectures:MSDN-SSIS Expression Task Documentation.
REMARQUE: (la réponse acceptée est périmée.)