SSIS:构建时包密码错误
SSIS: Package password error when building
我们在 Visual Studio Integration Services 项目中有数百个 SSIS 包。最初设置时,它被配置为使用用户密钥加密包中的敏感数据。这在签出项目文件时给我们带来了一些问题并且我们发生了冲突,因为当然,我们不同的开发人员用户密钥不同。
我们刚刚尝试使用密码更改为敏感数据。为此,我们必须更新项目 属性,然后我们必须手动对每个包进行更新(我尝试使用 dtutil.exe 进行循环,但由于某种原因它不起作用)。要构建我的项目,我必须打开每个包,更改密码,然后构建项目。经过几个小时并更新和保存每个包后,我能够构建和部署我的包。
之后,我对源代码管理 (Azure Git) 进行了 commit/push 操作,当我的同事拉取并打开项目时,他们现在无法构建,但出现相同的错误。如果他输入密码并检查所有内容,然后我将其拉回,我会再次遇到错误。
包和项目密码匹配,我可以构建,但是当它被拉下时我们得到错误。
错误是:
“项目一致性检查失败。检测到以下不一致:
[package Name] 的密码与项目不同
我能够解决这个问题,但我无法弄清楚到底发生了什么。我基本上将我的保护级别更改为 DontSaveSensitive,并确保我的所有密码和敏感信息都已参数化并使用 SSIS 环境变量传入。
所以在确保包中没有保存所有敏感数据后,我更改了项目保护级别和每个包的保护级别。我使用此代码更改了包:
for %f IN (*.dtsx) DO dtutil.exe /file %f /encrypt file;%f;0 /quiet
这改变了包的设置,但我在构建时仍然收到错误。我必须打开每个包,将保护级别 属性 更改为任何其他值,然后返回到 DontSaveSensitive,然后构建。一旦我这样做了,这些项目就从错误消息中消失了。在为 650 多个包手动完成之后,我能够构建。最重要的解决方案是,一旦我进行了推送并且我的同事将更改撤下,他们就不必编辑每个包。当我使用带密码的加密敏感时,我们无法阻止它要求更改并在每个包上构建。
这仍然是一个谜,为什么 dtutil.exe 不改变它们而不需要重新构建是非常令人沮丧的。但这种解决方法最终让我们解决了问题,无论如何参数化可能是最佳实践。
我刚刚遇到了同样的问题,我的问题是我没有在每个包的属性中引入密码(不仅在项目中),在这样做之后我已经能够重建项目了。
我们在 Visual Studio Integration Services 项目中有数百个 SSIS 包。最初设置时,它被配置为使用用户密钥加密包中的敏感数据。这在签出项目文件时给我们带来了一些问题并且我们发生了冲突,因为当然,我们不同的开发人员用户密钥不同。
我们刚刚尝试使用密码更改为敏感数据。为此,我们必须更新项目 属性,然后我们必须手动对每个包进行更新(我尝试使用 dtutil.exe 进行循环,但由于某种原因它不起作用)。要构建我的项目,我必须打开每个包,更改密码,然后构建项目。经过几个小时并更新和保存每个包后,我能够构建和部署我的包。
之后,我对源代码管理 (Azure Git) 进行了 commit/push 操作,当我的同事拉取并打开项目时,他们现在无法构建,但出现相同的错误。如果他输入密码并检查所有内容,然后我将其拉回,我会再次遇到错误。
包和项目密码匹配,我可以构建,但是当它被拉下时我们得到错误。
错误是: “项目一致性检查失败。检测到以下不一致: [package Name] 的密码与项目不同
我能够解决这个问题,但我无法弄清楚到底发生了什么。我基本上将我的保护级别更改为 DontSaveSensitive,并确保我的所有密码和敏感信息都已参数化并使用 SSIS 环境变量传入。
所以在确保包中没有保存所有敏感数据后,我更改了项目保护级别和每个包的保护级别。我使用此代码更改了包:
for %f IN (*.dtsx) DO dtutil.exe /file %f /encrypt file;%f;0 /quiet
这改变了包的设置,但我在构建时仍然收到错误。我必须打开每个包,将保护级别 属性 更改为任何其他值,然后返回到 DontSaveSensitive,然后构建。一旦我这样做了,这些项目就从错误消息中消失了。在为 650 多个包手动完成之后,我能够构建。最重要的解决方案是,一旦我进行了推送并且我的同事将更改撤下,他们就不必编辑每个包。当我使用带密码的加密敏感时,我们无法阻止它要求更改并在每个包上构建。
这仍然是一个谜,为什么 dtutil.exe 不改变它们而不需要重新构建是非常令人沮丧的。但这种解决方法最终让我们解决了问题,无论如何参数化可能是最佳实践。
我刚刚遇到了同样的问题,我的问题是我没有在每个包的属性中引入密码(不仅在项目中),在这样做之后我已经能够重建项目了。