使用devenv生成带EncryptSensitiveWithPassword的ispac时如何免交互传密码?
针对你遇到的VS2019迁移后,非交互环境构建EncryptSensitiveWithPassword加密的SSIS项目时弹出密码提示的问题,以下是几种可行的解决方案:
方案一:使用MSBuild直接构建并传递密码
VS2019已将SSIS项目的构建逻辑整合到MSBuild体系中,无需手动引用旧版Microsoft.SqlServer.IntegrationServices.Build.dll。直接通过MSBuild命令传递密码参数即可完成无交互构建:
MSBuild "project\SsisCommon.dtproj" /p:Configuration=Development /p:SSISPassword=你的加密密码
其中SSISPassword参数对应项目SecurityLevel为EncryptSensitiveWithPassword时所需的密码,执行该命令不会触发交互弹窗,完全适配非交互环境。
方案二:使用ISDeploymentWizard.exe命令行模式(构建+部署一体化)
如果需要同时完成ispac包生成和SSISDB部署,可使用SSIS部署向导的静默命令行模式,该工具支持直接传递密码:
ISDeploymentWizard.exe /Silent /ProjectFile:"project\SsisCommon.dtproj" /TargetServerName:你的SQL服务器名 /TargetPath:/SSISDB/目标文件夹/项目名 /Password:你的加密密码
工具默认路径参考:C:\Program Files (x86)\Microsoft SQL Server\150\DTS\Binn\ISDeploymentWizard.exe(版本号150对应SQL Server 2019,若安装其他版本可调整路径中的版本号)。
方案三:临时调整项目加密方式(仅限临时测试场景)
若只是紧急测试,可临时修改SSIS项目的SecurityLevel为EncryptSensitiveWithUserKey或DoNotSaveSensitive,构建完成后再改回原配置。但此方法仅适用于临时场景,不建议长期使用,避免敏感数据泄露或配置混乱。
补充说明
你之前依赖旧版Microsoft.SqlServer.IntegrationServices.Build.dll的构建方式失效,是因为VS2019对SSIS构建组件的依赖关系和部署路径做了调整,直接引用旧组件会出现vsintegration.dll这类依赖缺失问题,使用上述官方支持的工具或MSBuild参数是更稳定的长期解决方案。
内容的提问来源于stack exchange,提问作者Cascador84

