【问题标题】:SSIS: Package password error when buildingSSIS:构建时包密码错误
【发布时间】:2020-04-29 13:43:06
【问题描述】:

我们在一个 Visual Studio 集成服务项目中有数百个 SSIS 包。最初设置它时,它被配置为使用用户密钥加密包中的敏感数据。当项目文件被签出并且我们发生冲突时,这给我们带来了一些问题,因为当然,我们不同的开发者用户密钥是不同的。

我们刚刚尝试使用密码更改为敏感数据。为此,我们必须更新项目属性,然后我们必须手动为每个包执行此操作(我尝试使用 dtutil.exe 进行循环,但由于某种原因它不起作用)。为了构建我的项目,我必须打开每个包,更改密码,然后构建项目。经过几个小时的更新和保存每个包后,我能够构建和部署我的包。

之后,我对源代码控制 (Azure Git) 进行了提交/推送,当我的同事拉取并打开项目时,他们现在无法构建并出现相同的错误。如果他输入密码并检查所有内容,然后我将其拉回,我会再次收到错误。

包和项目密码匹配,我可以构建,但是当它被拉下时,我们得到了错误。

错误是: “项目一致性检查失败。检测到以下不一致: [包名]的密码与项目不同”

【问题讨论】:

  • 项目是使用Project部署模式还是Package部署模式?我的密码没有任何问题,我所有的项目都使用包部署模型
  • 您可能需要在项目级别设置包保护并签入除 SSIS 包文件之外的项目或解决方案文件。然后确保每个人在再次打开项目/解决方案文件之前都执行“获取最新”。
  • @Gigga - 该项目正在使用项目部署。
  • @digital.aaron - 我首先在项目级别设置包保护,然后是所有包。构建完成后,我将其全部签入,其他开发人员已将其全部撤下。

标签: visual-studio ssis


【解决方案1】:

我能够解决这个问题,但我无法弄清楚到底发生了什么。我基本上将保护级别更改为 DontSaveSensitive,并确保我的所有密码和敏感信息都已参数化并使用 SSIS 环境变量传入。

所以在确保所有敏感数据都没有保存在包中之后,我更改了项目保护级别和每个包的保护级别。我使用此代码更改了软件包:

for %f IN (*.dtsx) DO dtutil.exe /file %f /encrypt file;%f;0 /quiet

这改变了包的设置,但我在构建时仍然收到错误。我必须打开每个包,将保护级别属性更改为任何其他值,然后返回 DontSaveSensitive,然后构建。一旦我这样做了,这些项目就会从错误消息中消失。在为 650 多个软件包手动完成之后,我能够构建。最重要的解决方案是,一旦我进行推送并且我的同事将更改撤下,他们就不必编辑每个包。当我使用密码敏感加密时,我们无法阻止它要求更改并在每个包上构建。

这仍然是一个谜,为什么 dtutil.exe 不只是改变它们而不需要重新构建是非常令人沮丧的。但这项工作最终让我们克服了这个问题,无论如何参数化可能是最佳实践。

【讨论】:

    【解决方案2】:

    我只是遇到了同样的问题,我的问题是我缺少在每个包的属性中引入密码(不仅在项目中),这样做之后我已经能够重建项目。

    【讨论】:

      猜你喜欢
      • 2018-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多