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

spécifié direction de sortie et le type de données DBTIMESTAMP.

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

Était-ce utile?

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 à

scroll top