2013-07-22 6 views
5

Sto provando a chiamare una procedura memorizzata semplice che restituirebbe un elenco di nomi nel formato di test normale, il tutto in un'unica riga. Le sto passando due parametri, ma non importa come configuro la chiamata, all'interno di un editor di origine OLE DB o all'interno di un'attività SQL eseguibile. Ci deve essere qualcosa che mi manca con la mia istruzione SQL b/c continuo a ricevere un errore.Chiamata di stored procedure SSIS

mio testo del comando SQL è

EXEC [dbo].[spGetEmployerIdCSV] ?, ? 

I parametri sto passando sono elencati esattamente come sono dichiarate nella stored procedure, @IDType e @IDNumber, che vengono mappati a variabili predefinite.

Ogni volta che provo a farlo funzionare da entrambi tipo di attività, ottengo uno SQL costrutto

L'Exec o istruzione non è supportata.

Qual è il modo migliore per eseguire una stored procedure all'interno di SSIS?

Grazie.

+0

hai fatto una mappatura dei parametri? Segui questo http://www.sqlis.com/post/The-Execute-SQL-Task.aspx – JonH

+0

quale versione di SSIS? – HLGEM

+0

È il 2012. Ho trovato che il problema era l'importazione di un varchar (Max) – Paynetech

risposta

6

Non riesco a ricreare il problema.

Ho creato un flusso di controllo con il proc già esistente.

control flow

ho il mio Esegui SQL configurato come

exec sql task

tab parametri mostra

parameter mapping

Quando clicco corsa, il pacchetto diventa verde.

La mia ipotesi iniziale era che tu avessi segnalato che stavi usando una procedura memorizzata e stavi erroneamente fornendo la parte EXEC. Avevo fatto qualcosa di simile con SSRS ma anche aggiornando lo IsQueryStoredProcedure su True, tramite Expression, non potevo rigenerare il tuo messaggio di errore.

Se si sta facendo qualcos'altro/diverso/in aggiunta a ciò che ho mostrato nell'attività Esegui SQL, è possibile modificare la domanda per descrivere quali funzionalità dovrebbero mostrare la procedura.

+0

Grazie billinkc. Apprezzo molto il tuo aiuto con questo. Ho trovato il problema era, stavo cercando di importare inizialmente un varchar (max) nella mia variabile per poi passarlo nel sproc. Ho scoperto che apparentemente le impostazioni SSIS e (max) della lunghezza NON funzionano affatto bene insieme. Ha causato il fallimento dell'intera importazione dei dati, quindi non consentire il resto del flusso di dati. Una volta impostata la lunghezza, funziona perfettamente, utilizzando l'assistenza della query memorizzata da parte dell'utente. Grazie ancora! – Paynetech

+0

Sì, ciò causerebbe problemi poiché SSIS ha i propri tipi di dati. Probabilmente usato DT_STR, che è una stringa di caratteri ANSI/MBCS con terminazione nulla con una lunghezza massima di 8000 caratteri. (Se un valore di colonna contiene terminatori null aggiuntivi, la stringa verrà troncata al verificarsi del primo null.) SQL Server varchar (max) memorizza un massimo di 2 147 483 647 (2 GB) - un bel po 'di più! – Thronk

2

Sono stati specificati i parametri di output? per 2 in/1 out il codice SQL sarà simile:

EXEC [dbo].[spGetEmployerIdCSV] ?, ?, ? OUTPUT 

ResultSet deve essere impostato a nessuno!

+1

Anche questo non sembra funzionare. L'esempio di risposta è l'utilizzo all'interno di un'attività Esegui SQL o all'interno di un Task flusso dati/Editor origine OLE DB? Se l'ho impostato in questo modo nell'Editor dei sorgenti, semplicemente rifiuta di prendere altri parametri. Se dall'interno di SQL Task viene indicato "Il costrutto o istruzione SQL EXEC non è supportato." – Paynetech

-3

utilizzare lo stesso comando utilizzato per eseguire la stored procedure in MySQL Workbench

call();

utilizzare questo comando in Esegui SQL

+0

Questo non è etichettato come MySQL – Hituptony

1

Ho avuto lo stesso problema.

Quando si esegue l'attività, selezionare la scheda "Avanzamento"; questo ti darà i dettagli dell'errore 'a tutti gli effetti'.

Nel mio caso non ho mappato il parametro che ho creato nell'attività SQL a quello attuale nella stored procedure.

Quindi, fare doppio clic sull'attività SQL, fare clic su Parameter Mapping sul lato sinistro, quindi creare i parametri e i rispettivi mapping. Ecco uno screenshot (nella versione 2012):

enter image description here