2017-10-09 2 views
0

J'ai un package SSIS (SQL Server 2016) qui inclut une tâche DDL d'exécution. La tâche consiste à sauvegarder un cube tabulaire SSAS (afin qu'il puisse être répliqué sur un deuxième serveur appartenant à un domaine différent).Utilisez un mot de passe paramétré dans une tâche DDL d'exécution

Généralement, lorsque j'écris des paquets SSIS, je paramétrise tout ce qui peut changer avec le temps. Dans ce cas, je veux paramétrer où je sauvegarde le fichier ainsi que le mot de passe à utiliser.

Dans une tâche de script SSIS classique, je peux directement référencer les paramètres du projet. Je ne vois aucun moyen de le faire avec une tâche DDL Execute. Le mieux que je puisse faire est de récupérer le script entier à partir d'une variable, qui fait ensuite référence aux paramètres en question. Le défi que j'ai est que je travaille avec un mot de passe, donc je veux marquer le paramètre du projet de mot de passe comme sensible. Dès que je fais cela, je ne peux pas référencer le paramètre dans une variable.

Mes options semblent être:

  1. Laissez le paramètre mot de passe du projet ne sont pas marquées comme sensibles (ce qui signifie qu'il est visible à tous ceux qui ouvre le paquet et/ou a accès aux variables d'environnement SSISDB)

  2. Coder en dur le script dans la tâche DDL et ne pas paramétrer le mot de passe ou le nom du fichier. De plus, cryptez le paquet entier (plutôt que seulement les propriétés sensibles) afin que quiconque ouvre le paquet ne puisse pas le voir.

La deuxième option semble la meilleure, car elle n'implique pas un mot de passe visible en texte brut. Cependant, il ne permet aucun paramétrage du mot de passe. (Ce qui signifie que chaque changement de mot de passe nécessiterait un redéploiement du paquet.)

Ai-je raté quelque chose? Existe-t-il un autre moyen de référencer un mot de passe paramétré dans une tâche DDL d'exécution dans SSIS que je ne connais pas? D'autres recommandations pour ce scénario?

+0

Side note sur l'option 2: Je me demande s'il pourrait y avoir des scénarios où un mot de passe contenu dans le texte brut à l'intérieur d'une variable (dans un package entièrement chiffré) serait inclus dans la ErrorDescription si le script ne pouvait pas être exécuté. – Leonard

+0

2ème côté Remarque: La documentation de la tâche DDL Execute mentionne que, comme les scripts DDL peuvent contenir des mots de passe, le package entier doit être crypté. https://docs.microsoft.com/en-us/sql/integration-services/control-flow/analysis-services-execute-ddl-task – Leonard

+0

Vous pouvez accéder aux paramètres chiffrés dans la tâche de script. Il y a un exemple de comment faire cela dans les commentaires générés en haut de la tâche de script. Si j'ai bien compris votre problème. –

Répondre

0

C'est la syntaxe pour faire référence à un paramètre sensible dans une tâche de script SSIS: enter image description here

+0

Malheureusement, je n'utilise pas la tâche de script dans cette instance; J'utilise la tâche Execute DDL. – Leonard

+0

Est-il possible de générer dynamiquement les instructions DDL dans une tâche de script avant la tâche DDL? –

+1

Avez-vous envisagé d'utiliser cette classe: https://technet.microsoft.com/en-us/library/microsoft.datatransformationservices.tasks.dtsprocessingtask.asexecuteddltask(v=sql.110).aspx –