在执行DDL任务中使用参数化密码

在执行DDL任务中使用参数化密码

问题描述:

我有一个包含执行DDL任务的SSIS包(SQL Server 2016)。其任务是备份SSAS表格多维数据集(以便它可以在位于不同域上的第二台服务器上进行复制)。在执行DDL任务中使用参数化密码

通常当我编写SSIS包时,我会参数化随时间变化的所有内容。在这种情况下,我想参数化我备份文件的位置以及要使用的密码。

在常规的SSIS脚本任务中,我可以直接引用项目参数。我没有看到用Execute DDL Task执行此操作的任何方法。我能做的最好的是从变量中获取整个脚本,然后引用相关参数。

我面临的挑战是我正在使用密码,所以我想将密码项目参数标记为敏感。只要我这样做,我不能在变量中引用参数。

我的选择似乎是:

  1. 离开没有标记为敏感的密码项目参数(这意味着它是可见的谁打开包装和/或有权访问SSISDB环境变量的任何人)

  2. 对DDL任务内的脚本进行硬编码,并且根本不参数化密码或文件名。此外,加密整个软件包(而不仅仅是敏感属性),以便打开软件包的任何人都看不到它。

第二个选项听起来是最好的,因为它不涉及密码在纯文本中可见。但是,它不允许对密码进行任何参数设置。 (这意味着每次更改密码都需要重新部署包装。)

我错过了什么吗?是否有另一种方法来引用SSIS中的一个执行DDL任务内的参数化密码,这是我不知道的?对于这种情况的任何其他建议?

+0

附注:我不知道是否有可能是其中包含在一个变量中明文密码的情况(在如果脚本运行失败,将包含在ErrorDescription中。 – Leonard

+0

第二方注意:有关Execute DDL任务的文档确实提到,由于DDL脚本可以包含密码,因此应对整个软件包进行加密。 https://docs.microsoft.com/en-us/sql/integration-services/control-flow/analysis-services-execute-ddl-task – Leonard

+0

您可以在脚本任务中访问加密的parms。有一个如何在脚本任务顶部生成的注释中执行此操作的示例。如果我已经正确理解你的问题。 –

这是在SSIS脚本任务引用一个敏感的参数的语法:在选项2 enter image description here

+0

不幸的是我没有在这个例子中使用脚本任务;我正在使用Execute DDL任务。 – Leonard

+0

是否可以在DDL任务之前动态生成脚本任务中的DDL语句? –

+1

你有没有看过使用这个类:https://technet.microsoft.com/en-us/library/microsoft.datatransformationservices.tasks.dtsprocessingtask.asexecuteddltask(v=sql.110).aspx –