【发布时间】:2018-06-25 12:13:46
【问题描述】:
我们有一个 SSIS 项目,其中一个包连接到 REST API。我们使用 HTTP 连接管理器(带有用户名/密码)和脚本组件来打开连接管理器并解析响应。所有包的保护级别都是 EncryptSensitiveWithUserKey。一切都在 Visual Studio 中运行,并且可以使用部署向导部署到 SSIS-DB。在 SSIS-DB 中,我们可以运行包,还可以通过环境更改连接管理器密码/用户名。
但我们无法通过正常的自动化部署来实现这一点:签入到 TFS 并使用 VSTS-buildserver 和 Powershell 脚本。从 SSIS-db 运行包时,我们得到:
无法解密受保护的 XML 节点“DTS:Property”,错误为 0x80070002“系统找不到指定的文件。”。 您可能无权访问此信息。当存在加密错误时会发生此错误。验证正确的密钥是否可用。
我们(相信我们)知道 SSIS 保护级别和加密的工作原理,原因很明显:SSIS 文件使用用户密钥加密,部署向导(由开发人员运行!)使用 SSIS 解密/重新加密-目录键。但是构建服务器没有用户密钥,因此解密步骤无效。 但是,我们认为这应该不是问题,因为密码已被 SSIS 环境替换,但会出现上述错误。
我们已经尝试了所有的保护级别:
- DontSaveSensitive:包无法在 VS/SSISDB 中运行。
- EncryptSensitiveWithPassword:PowerShell $folder.DeployProject 命令不支持密码。 Same method as here.
【问题讨论】:
-
如果您从项目中排除该包,并将其保留为
EncryptSensitiveWithUserKey,它是否正确部署到 SSISDB? -
@billinkc 是的,这个带有 http 连接的包是新添加到工作项目中的。剩余的项目/包仍然可以正常部署和执行。
-
没有找到可以使用 EncryptSensitiveWithPassword 加密部署的 PowerShell 对象模型。
-
我可以使用
EncryptSensitiveWithPassword,但是哪个部署脚本支持密码参数? (在 VSTS 中调用。) -
我采取所有措施只使用
DoNotSaveSensitive。您提到 DontSaveSensitive:包可以在 VS/SSISDB 中运行 - 有什么问题?
标签: visual-studio powershell ssis sql-server-data-tools