19

Sto provando a creare un pacchetto SSIS che interroga i dati da una tabella e chiama una stored procedure in un altro database con ogni riga.Come si chiama una stored procedure in SSIS?

Nel mio vecchio pacchetto DTS, stavo facendo questo:

EXEC myStoredProcedure ?, ?, ? 

... e poi ho mappato i parametri. Tuttavia, in SSIS, non riesco a capire come farlo funzionare.

Ho un compito Flusso di dati, che prima esegue una query per i dati. Passa i dati a una destinazione OLE DB. Ho impostato la modalità di accesso dati a "comando SQL", ma quando provo a inserire l'SQL sopra, ottengo "Conteggio parametri invalido" quando analizza l'SQL. Non riesco ad arrivare alla schermata Mappature. Qualche idea?

+1

Perché un'attività così semplice sembra così complessa con MS 'Data Transfer Utilities ??? Questo è stato facile da fare in DTS, a condizione che ci sia voluto del tempo per impostare mappature inutili. –

+0

Sono sicuro che puoi farlo a livello di "flusso di dati", infatti sono sicuro di averlo fatto ma non riesco a ricordare come. In quale altro modo si suppone, ad esempio, eseguire un proc INSERT per ricerche fallite –

risposta

13

nel flusso di dati, la OLE DB Command può essere utilizzato per eseguire un'istruzione SQL per ogni riga in un flusso di dati - (MSDN documentation)

In alternativa, è possibile memorizzare il risultato di origine impostato in una variabile del tipo di dati oggetto e utilizzare un contenitore Foreach Loop nel flusso di controllo (esempio here).

+0

Penso che funzioni, ma ricevo un errore di conversione Unicode ... e non sono sicuro di come risolverlo. –

+0

Difficile esserne certi senza più dettagli. Il tuo SP prende parametri char o varchar? –

+0

... che dovrebbero essere parametri char e/o varchar –

7

Sarà necessario utilizzare un'attività Esegui SQL. Nella sezione SQLStatement è possibile aggiungere il codice per eseguire la stored procedure.

Per passare i parametri, utilizzare il? sintassi e specificare i parametri nella sezione "Parameter Mapping".

Un buon esempio può essere trovato here.

+0

Quindi, come posso passare i dati nell'attività SQL di esecuzione? Non vedo alcun parametro utile nella sezione parametri. Solo i parametri "System :: xxxxx". –

+0

Questo esempio non mi aiuta, come i suoi solo 2 scenari specifici. Nello specifico, sto cercando di eseguire un'istruzione select e di passare ogni riga in una stored procedure in un altro server. Sai come farlo? –

+0

^Funziona. È necessario definire le proprie variabili OWN, non utilizzare le variabili di livello SYSTEM. Dovresti utilizzare una "Esegui attività SQL" nella sezione Flusso di controllo del tuo pacchetto. Apri l'editor Variabili e nell'angolo in alto a sinistra, aggiungi le tue variabili di livello USER. – D3vtr0n

Problemi correlati