SSIS 2008 Exécuter problème datetime2 de mappage des paramètres de sortie SQL
-
22-08-2019 - |
Question
Je suis en train d'utiliser une tâche d'exécution SQL SSIS 2008 pour mapper un paramètre de sortie de la procédure de stockage à une variable de package.
La variable de package est de type SSIS DateTime et le paramètre de procédure de sauvegarde est de type SQL DATETIME.
L'instruction SQL est EXEC GetCurrentDate @CurrentDate=?
et dans l'écran de mappage de paramètres, le paramètre est associé à la variable de paquet avec
Quand je lance le paquet que je reçois l'erreur suivante:
[tâche d'exécution SQL] Erreur: exécution la requête « exec GetCurrentDate @ CurrentDate =? "A échoué avec le erreur suivant: « Le type de La valeur étant affectée à la variable « Utilisateur :: CurrentDate » diffère de la type de variable en cours. Les variables peuvent ne pas changer le type en cours d'exécution. types de variables sont strictes, à l'exception variables de type objet. ». Possible raisons d'échec: Problèmes avec le requête, propriété « ResultSet » pas réglé correctement, paramètres non réglés correctement ou connexion non établie correctement.
Si je lance une trace sur la requête en cours d'exécution, je vois le type est supposé que 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
Quelqu'un sait pourquoi il est en supposant que le type est datetime2?
Merci
La solution
trouvé la réponse sur un Micorsoft Connect rapport de bogue:
Nous fermons ce cas comme cela est prévu et est un comportement à la suite du nouveau changement sql de type datetime. Vous utilisez un gestionnaire de connexion OLEDB natif pour tâche sql, dans le processus de COM Interop, nous utilisons VARIANT pour maintenir la valeur et la seule façon d'éviter la perte de données est de stocker la valeur en tant que variante BSTR. Si vous changez utilisateur :: dateParam type chaîne il fonctionnera, ou vous pouvez passer à utiliser le gestionnaire de connexion réussi à contourner le COM Interop.
http://connect.microsoft.com/SQLServer/feedback /ViewFeedback.aspx?FeedbackID=307835
Autres conseils
Essayez spécifier les paramètres inout / sortie comme DATE
plutôt que DBTIMESTAMP
dans la tâche SSIS.
Cela fonctionne certainement SSIS 2005 paquets que j'ai travaillé.
Il est également intéressant de jeter un oeil à