J'utilise Execute Process task dans SSIS 2008 R2. J'ai une variable idVar
qui est de type de données Int32 . Je dois passer cette variable à la propriété Arguments
de la tâche pour que le processus exécutable puisse prendre cette variable en argument. J'utilise expression pour assigner @idVar
à Arguments
.
Maintenant, le système dit que je dois convertir Int en String. J'ai donc utilisé l'expression suivante dans le générateur d'expression.
(DT_STR, 10, 1252) @[User::IdVar]
Cela donne l'erreur suivante:
Expression cannot be evaluated.
Additional information:
The expression "(DT_STR, 10, 1252) @[User:IdVar]" has a result type of "DT_STR",
which cannot be converted to a supported type.
(Microsoft.DataTransformationServices.Controls)
Quelle est la bonne façon de transtyper le nombre en chaîne?
La propriété Arguments
dans Execute Process Task disponible dans l'onglet Flow Flow attend une valeur de type de données DT_WSTR
et non DT_STR
.
Créez un package SSIS dans Business Intelligence Development Studio (BIDS) 2008 R2 et nommez-le ainsi: SO_13177007.dtsx
. Créez une variable de package avec les informations suivantes.
Name Scope Data Type Value
------ ------------ ---------- -----
IdVar SO_13177007 Int32 123
Faites glisser une tâche Execute Process Task sur l’onglet Control Flow et nommez-la comme argument Pass.
Double-cliquez sur la tâche Execute Process pour ouvrir le Execute Process Task Editor
. Cliquez sur la page Expressions, puis sur le bouton Ellipsis en regard de la propriété Expressions pour afficher le Property Expression Editor
.
Dans l'éditeur d'expressions Property, sélectionnez la propriété Arguments
et cliquez sur le bouton Ellipsis en regard de la propriété pour ouvrir le Expression Builder
.
Sur le Expression Builder, entrez l'expression suivante et cliquez sur Evaluate Expression
. Cette expression tente de convertir la valeur entière de la variable IdVar
en type de données chaîne.
(DT_STR, 10, 1252) @[User::IdVar]
Cliquez sur Evaluate Expression pour afficher le message d'erreur suivant, car la propriété Arguments sur Execute Process Task attend une valeur de type de données DT_WSTR
.
Pour résoudre le problème, mettez à jour l'expression comme indiqué ci-dessous pour convertir la valeur entière en type de données DT_WSTR
. Cliquez sur Evaluate Expression pour afficher la valeur dans la zone de texte Evaluated value.
(DT_WSTR, 10) @[User::IdVar]
Pour comprendre les différences entre les types de données DT_STR
et DT_WSTR
dans SSIS, consultez la documentation Types de données Integration Services sur MSDN. Voici les citations de la documentation sur ces deux types de données de chaîne.
Chaîne de caractères ANSI/MBCS terminée par un zéro, d'une longueur maximale de 8 000 caractères. (Si une valeur de colonne contient des terminateurs null supplémentaires, la chaîne sera tronquée à l'occurrence du premier null.)
Chaîne de caractères Unicode à zéro terminal d'une longueur maximale de 4 000 caractères. (Si une valeur de colonne contient des terminateurs null supplémentaires, la chaîne sera tronquée à l'occurrence du premier null.)
Expression: "Total Count:" + (DT_WSTR, 11) @ [User :: int32Value]
pour Int32 - (-2 147 483 648 à 2 147 483 647)
Expression: "Total Count:" + (DT_WSTR, 5) @ [Utilisateur :: Cnt]