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

发布于 2024-07-22 17:55:26 字数 564 浏览 2 评论 0原文

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

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

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

我已就该问题联系了当地的 Microsoft 代表,到目前为止,他们仅将我链接到 描述如何设置或更改密码的页面,这没有帮助,因为我需要先打开包或提供旧密码。 有没有人遇到过类似的情况或者知道解决这个问题的方法?

I have a few SSIS packages that were password-protected (their protection level is apparently EncryptAllWithPassword) by a developer who left the company and can't be reached anymore, and trying to open them gives the following error since the password can't be supplied:

Error loading 'Package.dtsx' : Failed to remove package protection
with error 0xC0014037 "The package is
encrypted with a password. The
password was not specified, or is not
correct.". This occurs in the
CPackage::LoadFromXML method.

Is there any any way to open these packages? I have access to the administrator account originally used to create these packages and have other packages encrypted by the same person but using a different password that I know.

I have contacted a local Microsoft representative about the issue and so far they have only linked me to a a page describing how to set or change a password, which doesn't help because I need to open the package first or provide the old password. Has anyone been in a similar situation before or knows a way around this issue?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

红尘作伴 2024-07-29 17:55:27

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

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

I don't think there is any way to recover package if EncryptAllWithPassword is used, the whole package is encrypted, and can't be decoded without password. One can try of course password guessing or dictionary attacks hoping the developer used weak password.

If it is EncryptSensitiveWithPassword - you can open and then just retype the connection string passwords.

空城旧梦 2024-07-29 17:55:27

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

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

Just, open the package in notepad and change the protection level from 2 to 1

<DTS:Property DTS:Name="ProtectionLevel">1</DTS:Property>
柠栀 2024-07-29 17:55:27

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

It seems that the package was also stored on SQL Server (msdb database), exporting it from Integration Services into the file system allows us to open it (with a warning about losing sensitive data). This solution works perfectly for this particular situation; we mainly needed to know what happens in these packages.

慕巷 2024-07-29 17:55:27

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

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

Here are the steps to reset the password of a SSIS package

  1. Edit SSIS project file
  2. Change the Protection Level to EncryptAllWithPassword and update new password
  3. Save the project file.
  4. Change the protection level of each package to EncryptAllWithPassword
  5. Save all and recompile solution
假扮的天使 2024-07-29 17:55:27

我将@Venky 解决方案稍微修改为:

SELECT sjs.command
FROM msdb.dbo.sysjobs sj
JOIN msdb.dbo.sysjobsteps sjs ON sj.job_id = sjs.job_id
WHERE command like '%decrypt%'

这向我显示了所有带有密码的包。

I modified @Venky solution slightly to:

SELECT sjs.command
FROM msdb.dbo.sysjobs sj
JOIN msdb.dbo.sysjobsteps sjs ON sj.job_id = sjs.job_id
WHERE command like '%decrypt%'

This showed me all packages with passwords.

划一舟意中人 2024-07-29 17:55:27

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

我正打算还建议使用像 EC2 这样的云计算环境来分而治之......但后来我意识到你被困在 Windows 上!

I agree with Michael's comment about a password guessing or dictionary attack as being a good approach.

I was just about to also suggest using a cloud computing environment like EC2 to divide and conquer ... but then I realized you are stuck on windows!

静待花开 2024-07-29 17:55:27

将包的保护级别更改为使用sensitiveKey进行加密,一切都会正常工作。
:)

Change the Protection level of package to encrypt with sensitiveKey and all will work fine.
:)

暮光沉寂 2024-07-29 17:55:26

执行以下查询

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”,接下来的字符串是密码

execute the below query

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'

In the Result View

check for the text "/DECRYPT", the next following strings are the password

惟欲睡 2024-07-29 17:55:26

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

SELECT step.command
FROM msdb.dbo.sysjobs job
JOIN msdb.dbo.sysjobsteps step ON job.job_id = step.job_id
WHERE step.command like '%Your Package Name%'

在结果中,显示的唯一一列是命令在该文本中查找 /DECRYPT,其后的下一个字符串将是用引号引起来的密码。

Use this query to find your package password:

SELECT step.command
FROM msdb.dbo.sysjobs job
JOIN msdb.dbo.sysjobsteps step ON job.job_id = step.job_id
WHERE step.command like '%Your Package Name%'

In the results the only column displated is command look through that text for /DECRYPT the next string after it will be the password enclosed in quotation marks.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文