2010-10-13 8 views
10

Prima di darmi una sorta di infarto legato allo stress.SSIS imposta il set di risultati dal flusso di dati alla variabile

Qualcuno saprebbe come completare l'apparentemente semplice compito di impostare il set di risultati di un'attività di flusso di dati (il risultato sarà 0 o 1) e assegnare tale valore a una variabile.

Ho creato la variabile ok.

Il set di risultati proviene da un file XML con più elementi. Il flag (0 o 1) è il risultato di uno di questi elementi, quindi ho anche bisogno di sapere come ottenere che il set di risultati sia solo quel flag.

Se qualcuno potesse aiutare lo apprezzerei davvero.

Aggiornamento: Alla fine leggo il risultato (0,1) su SQL Server in una tabella flag. Quindi ha utilizzato uno script Esegui SQL per leggerlo da SQL Server e una variabile. Non sono sicuro se questo è il modo migliore per farlo, ma sembra aver fatto il trucco.

risposta

9

È possibile utilizzare un componente Script flusso di dati per trasferire un valore di colonna del flusso di dati a una variabile SSIS. Tuttavia, è necessario seguire determinate regole quando si lavora con il componente Script flusso di dati e le variabili SSIS.

SSIS non consente di assegnare valori alle variabili SSIS nella procedura di script che elabora le righe. Ma ci sono procedure pre e post esecuzione dove puoi gestire il compito.

Nel componente Script, aggiungere la variabile SSIS alla proprietà ReadWriteVariables. Modificare lo script e dichiarare una variabile nella classe ScriptMain. Utilizzare la procedura PreExecute per inizializzare la variabile. Utilizzare la procedura ProcessInputRow per assegnare il valore della colonna input -buffer alla variabile di script. E, utilizzare l'attività PostExecute per assegnare il valore dalla variabile di script alla variabile SSIS.

Ecco un esempio di componente di script VB. Ha una variabile SSIS (MyOutVariable) che otterrà l'output della variabile di script (MyVar). La variabile MyVar ottiene il valore dalla colonna MyNumber nel flusso di dati.

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 
1

partire con SSIS 2012, si può facilmente assegnare una variabile un valore utilizzando il Espressione Task. Non è necessario scrivere uno script - di cui la maggior parte di noi è diffidente, per aver compiuto un compito apparentemente semplice di impostare il valore di una variabile.

Es: Se ho una variabile data chiamata Today e voglio assegnare un valore, posso farlo facilmente nel compito Expression come mostrato di seguito.

enter image description here

Letture consigliate: MSDN - SSIS Expression Task Documentation.

NOTA:(La risposta accettata è superata.)

+0

Nota domanda iniziale è di 5 anni, pre SQL Server 2012. risposta selezionata è stata corretta al momento. – Pixelated

+0

Lo so.Ho lasciato quella nota nella mia risposta, in modo che qualcuno che viene a questa domanda nel 2016 non vada in questa direzione se stanno usando SSIS 2012 o> :) – Shiva

+1

@Shiva - La risposta applicabile a SSIS 2012 sembra incompleta - La domanda chiede come impostare una variabile con un valore ottenuto da un'attività di flusso di dati. Tuttavia, Expression Task non è disponibile all'interno di un flusso di dati (mentre il componente script è), quindi dobbiamo anche sapere come recuperare il valore dal flusso di dati al flusso di controllo per utilizzare quindi l'attività di espressione. – Voysinmyhead

Problemi correlati