SSIS 2008 Esegui SQL parametro di uscita problema mappatura datetime2
-
22-08-2019 - |
Domanda
Sto cercando di utilizzare un'attività Esegui SQL in SSIS 2008 per mappare un parametro di output procedura di memorizzazione a una variabile del pacchetto.
La variabile pacchetto SSIS tipo DateTime e il parametro procedura negozio è di tipo SQL DATETIME.
L'istruzione SQL è EXEC GetCurrentDate @CurrentDate=?
e nella schermata dei parametri di mappatura, il parametro viene mappato alla variabile pacchetto con direzione di uscita e Tipo di dati DBTIMESTAMP specificato.
Quando eseguo il pacchetto ottengo il seguente errore:
[Esegui SQL] Errore: esecuzione la query "EXEC GetCurrentDate @ CurrentDate =? "Non riuscita con il seguente errore: "Il tipo di valore assegnato alla variabile "Utente :: DataCorrente" differisce dalla corrente tipo variabile. Le variabili possono Non cambiare tipo durante l'esecuzione. Tipi di variabili sono severe, ad eccezione di le variabili di tipo Object. ". Possibile motivi di guasto: Problemi con il interrogazione, "ResultSet" proprietà non impostato correttamente, parametri non impostati correttamente o non collegamento stabilito in modo corretto.
Se eseguo una traccia sulla query in esecuzione vedo il tipo viene assunta come datetime2:
declare @p3 datetime2(7)
set @p3=NULL
exec sp_executesql N'EXEC GetCurrentDate @CurrentDate=@P1 ',N'@P1 datetime2(7) OUTPUT',@p3 output
select @p3
Qualcuno sa il motivo per cui sta assumendo il tipo è datetime2?
Grazie
Soluzione
Trovato la risposta su un bug report Micorsoft Connect:
Stiamo chiudendo questo caso in quanto questo è il comportamento previsto ed è il risultato del nuovo cambiamento di tipo datetime di SQL. Si utilizza una gestione connessione OLE DB nativo per SQL compito, nel processo di interoperabilità COM, usiamo VARIANT che contiene il valore e l'unico modo per prevenire la perdita di dati è quello di memorizzare il valore come BSTR variante. Se si modifica l'utente :: dateParam di tipo String che funzionerà, oppure si può passare a utilizzare gestione connessione riuscito a bypassare l'interoperabilità COM.
http://connect.microsoft.com/SQLServer/feedback /ViewFeedback.aspx?FeedbackID=307835
Altri suggerimenti
Prova a specificare i parametri inout / uscita come DATE
piuttosto che DBTIMESTAMP
nel compito SSIS.
Questo funziona sicuramente in SSIS 2005 pacchetti ho lavorato.
E 'anche la pena dare un'occhiata a questo link , che copre questo così come un paio di altri problemi con SSIS e le date.