comment conserver le résultat de la requête sql dans une variable et messegeBox
J'ai une simple requête sql dans ma tâche d'Exécution sql dans le package ssis,
SELECT MAX(binindex)
DE dbo.myTable
J'ai besoin de stocker cette valeur maximale de l'indice dans une variable et ensuite de le passer à la Tâche de Script et de l'afficher,
J'ai déjà déclaré une variable de package, le paquet compile, mais il montre -1 à chaque fois, je ne sais pas ce que je fais mal, toute aide sera appréciée!
public void Main(){
//TODO: Add your code here
Dts.TaskResult = (int)ScriptResults.Success;
MessageBox.Show(Dts.Variables["User::BININDEX"].Value.ToString());
}
- Quel est le type de données de la colonne binindex en dbo.MyTable? Quel est le type de données de la SSIS variable @[Utilisateur::BININDEX]?
- ils sont à la fois Int32
- Vous obtenez le même résultat lorsque vous exécutez la requête dans SSMS (je suppose que non sinon vous ne seriez pas poser la question)
- Pourriez-vous poster une capture d'écran de la page Mappage de Paramètre?
- le Mappage des paramètres de la Page est vide!! Je n'ai pas rien
- Désolé, je voulais dire l'Onglet Général. Pas assez de thé cet après-midi. Curieux de connaître le type de gestionnaire de connexions et le jeu de résultats de la propriété
- Je viens de faire........
- J'espère que le dernier commentaire/question avant que je puisse vous donner une réponse. Dans votre fenêtre de variables, la valeur de @[Utilisateur::BININDEX] la valeur -1 en ce moment (au moment de la conception)?
- Pas de...............Je viens de téléchargé l'image
Vous devez vous connecter pour publier un commentaire.
La bonne nouvelle, c'est que vous faites tout correctement, aussi loin que je peux voir. J'ai recréé votre colis et j'obtiens la valeur attendue à partir de ma requête.
Je peux aussi amener votre situation - la valeur correcte est retourné à partir de ma requête mais mon colis produit un "résultat incorrect."
Le problème, je l'espère, c'est que vous avez deux BININDEX les variables définies à différentes portées. Mon hypothèse initiale était que le Package d'étendue de l'un contenait une valeur de -1, et vous avez eu une variable dont l'étendue est la "Tâche d'Exécution SQL" avec le même nom. Le comportement par défaut est une variable est créée limitées à l'objet qui a actuellement le focus. Cette évolution de la version 2012 de SQL Server par le chemin.
Que votre photo montre une conception de la valeur de 123 pour le package d'étendue variable, la possibilité existe aussi que vous avez une variable définie sur la Tâche de Script avec le même nom de BININDEX. La variable locale de l'emporterait sur l'étendue globale de la variable
Cliquez sur votre Tâche de Script et j'espère que vous verrez un BININDEX qui y sont définies comme ci-dessus. Sinon, je pense que le problème est quelque part dans votre forfait, vous avez un conflit BININDEX variables. Vous pouvez essayer de piocher dans le Paquet de l'Explorateur à la recherche d'un exemple où vous avez deux variables avec le même nom indiqué.
J'ai besoin de partir, mais si rien de cela n'est le cas, ajouter un PostExecute point d'arrêt sur la Tâche d'Exécution SQL et de regarder votre fenêtre variables locales (pas de Variables qui ne reflète au moment de la Conception des valeurs). Développez des Variables et vous devriez être en mesure de voir la valeur de BININDEX. Est-il exact il?