如何恢复或重置SSIS包密码?

时间:2009-06-04 09:50:33

标签: sql-server ssis passwords etl

我有一些SSIS软件包受到密码保护(它们的保护级别显然是EncryptAllWithPassword)由开发人员离开公司而无法再到达,并且尝试打开它们会出现以下错误,因为密码可以不提供:

  

加载'Package.dtsx'时出错:无法删除包保护   错误0xC0014037“包是   用密码加密。该   密码未指定,或未指定   正确。“。这发生在   CPackage :: LoadFromXML方法。

有没有办法打开这些包裹?我可以访问最初用于创建这些软件包的管理员帐户,并让其他软件包由同一个人加密但使用我所知道的其他密码。

我已就此问题联系了当地的Microsoft代表,到目前为止他们只将我与a page describing how to set or change a password联系起来,这没有用,因为我需要先打开软件包或提供旧密码。有没有人之前处于类似的情况或知道解决这个问题的方法?

8 个答案:

答案 0 :(得分:16)

执行以下查询

SELECT sjs.command
FROM msdb.dbo.sysjobs sj
JOIN msdb.dbo.sysjobsteps sjs ON sj.job_id = sjs.job_id
WHERE sj.name = 'your package name'

在结果视图

检查文本" / DECRYPT",接下来的字符串是密码

答案 1 :(得分:5)

使用此查询查找您的包裹密码:

>

在结果中,唯一的列被移位是命令查看/ DECRYPT文本后面的下一个字符串,它将是用引号括起来的密码。

答案 2 :(得分:2)

如果使用EncryptAllWithPassword,我认为没有办法恢复包,整个包都是加密的,没有密码就无法解码。人们可以尝试密码猜测或字典攻击,希望开发人员使用弱密码。

如果是EncryptSensitiveWithPassword - 您可以打开然后重新键入连接字符串密码。

答案 3 :(得分:1)

似乎该软件包也存储在SQL Server(msdb数据库)上,将它从Integration Services导出到文件系统允许我们打开它(带有关于丢失敏感数据的警告)。该解决方案适用于这种特殊情况;我们主要需要知道这些包中会发生什么。

答案 4 :(得分:1)

只需在记事本中打开包,并将保护级别从2更改为1

<DTS:Property DTS:Name="ProtectionLevel">1</DTS:Property>

答案 5 :(得分:0)

以下是重置SSIS软件包密码的步骤

  1. 编辑SSIS项目文件
  2. 将保护级别更改为EncryptAllWithPassword并更新新密码
  3. 保存项目文件。
  4. 将每个程序包的保护级别更改为EncryptAllWithPassword
  5. 保存所有并重新编译解决方案

答案 6 :(得分:-1)

我同意迈克尔关于密码猜测或字典攻击的评论是一种好方法。

我还准备建议使用像EC2这样的云计算环境来分裂和征服......但后来我意识到你被卡在了窗户上!

答案 7 :(得分:-1)

使用encrypt将包的sensitiveKey更改为registry=http://registry.npmjs.org proxy=http://127.0.0.1:8888 https-proxy=http://127.0.0.1:8888 http-proxy=http://127.0.0.1:8888 strict-ssl=false ,一切正常。 :)