none
Comment dire à DTEXEC d'assigner une chaîne vide à un paramètre de package SSIS ? RRS feed

  • Question

  • Bonjour,

    Je tente d'automatiser quelques travaux au niveau du Shell Windows (CMD), en utilisant DTEXEC au lieu de les exécuter manuellement depuis l'interface graphique de SSMS (SQL Server Management Studio) 2012.

    J'ai un paramètre de Package de type String (abrégeons son nom en A_S) qui a une valeur par défaut non vide.

    Quand je lance ce Package via l'interface graphique de SSMS 2012, je peux assigner explicitement une chaîne vide comme valeur de ce paramètre.

    Mais par ailleurs, si je tape
     DTEXEC /ISS ... /PAR A_S
    ou
     DTEXEC /ISS ... /PAR A_S;
    ça ne marche pas (syntaxe incorrecte, du point de vue de DTEXEC).

    Comme une valeur littérale doit être spécifiée après le point-virgule, je ne peux pas non plus utiliser une paire d'apostrophes ('').

    D'un autre côté, DTEXEC /ISS ... /PAR "A_S; " est syntaxiquement correct et assigne un espace unique au paramètre A_S ... mais ce n'est pas une chaîne vide ni nulle !

    Une "ruse" pour faire mimer par DTEXEC ce qui est si simple à faire avec l'interface graphique de SSMS 2012 ?


    • Modifié J_l_F lundi 9 septembre 2013 10:26 ... et j'oubliais le titre !
    dimanche 8 septembre 2013 13:17

Toutes les réponses

  • Bonjour,

    Merci d’avoir contacté les forums MSDN France. La langue utilisée sur ces forums est la langue Française, donc s’il vous plaît repostez votre question en français ou modifiez votre premier message, comme on vous demande dans l’étiquette sur les forums MSDN France.

    Merci pour votre compréhension et collaboration.

    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    lundi 9 septembre 2013 06:59
    Modérateur
  • Si vous ne spécifiez rien pour « A _S » quel est le comportement ? Normalement il doit prendre la valeur default.

    Avez-vous essaye : DTEXEC /ISS ... /PAR "A_S;" sans l'espace?

    De l'autre cote pouvez-vous modifier le paquet et renommer le paramètre par exemple du « A_S » en « A_S_1», après introduire un pas de type

    If A_S _1  = «DEFAULT » then

                A_S = valeur default

    Else

    A_S = A_S _1. 

    End

    Et utiliser après le « A_S» initiale ?

    Merci,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    lundi 9 septembre 2013 13:10
    Modérateur
  • Bonjour et merci pour votre réponse ... mais c'est l'inverse que je cherche à faire : La valeur par défaut du paramètre A_S n'est pas la chaîne vide, qui est justement ce que je veux lui assigner comme valeur lors de mon appel par DTEXEC.

    Le point virgule omis ou suivi de rien sont considérées par DTEXEC comme des erreurs après "/par A_S".

    Je n'ai pas le droit de changer la valeur par défaut dans l'environnement SSIS utilisé pour lancer le Package.

    Comment faire ?

    lundi 9 septembre 2013 22:19
  • Dans ce cas la solution c'est de passer comme valeur pour paramètre  un chaine "VALEUR_NULLE" et dans le package faire une validation de type :

    if A_S_1 = VALEUR_NULLE then

    A_S = ""

    else

    A_S = A_S_1

    END IF.

    Ici vous avez un petit exemple sur les décisions dans un paquet SSIS:

    http://wannabesoftwareengineer.blogspot.com/2009/04/decision-making-in-ssis-depending-on.html

    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    mardi 10 septembre 2013 09:27
    Modérateur
  • Bonjour,

    Je n'ai pas du être assez clair : Je suis dans le contexte d'un pur profil d'exploitation et je n'ai pas le droit ...

    • ni de modifier l'environnement dans lequel le Package est exécuté (sinon c'est là que j'aurais mis une chaîne vide par défaut, bien entendu) ...
    • ni de modifier le code du Package DTSX (sinon, j'aurais posé ma question en tant que développeur)

     C'est vraiment avec DTEXEC seulement que je dois me débrouiller ... et je ne vois pas comment !

    Avec SQLCMD, il était possible d'utiliser l'option -v A_S="" ; pourquoi n'est-ce plus possible avec DTEXEC ? 

    dimanche 22 septembre 2013 19:25