我的 SSIS 包工作正常,但作为 SSMS 作业失败(错误:0xC0016016)

3 sql-server ssis ssms

我的 SSIS 包工作正常,但作为 SSMS 作业失败(错误:0xC0016016)

我发布这个问题并将我对这个问题的解决方案作为我自己的问题分享,因为我没有看到提出的问题与我遇到的特定问题相匹配,而且答案似乎分散在不同的论坛问题中。

背景:

  • 我在 SQL Server 2012 上有四个 SSIS 包,它们根据特定的包从 SQL Server 2008 R2、2008 或 2005 导入表。我为源数据库使用指定的 sql server 登录名和密码,为目标数据库使用集成的 Windows 安全性。
  • 在 SSIS 中,我可以毫无问题地运行每个包。
  • 为了确保这个包按计划运行,我在与 SSIS 包相同的服务器上设置了一个 SSMS 作业。在作业步骤属性中,我选择了:SQL Server 集成服务包 > 作为 SQL Sever 代理服务帐户运行 > 包源:文件系统)。

症状: 当手动运行作业以确保它正常工作时,我收到一个错误并在日志文件查看器中看到了这一点。这是几个错误中的第一个,但由于这是按时间顺序排列的第一个错误,我首先查看了这个错误。

  • 错误: 2014-10-24 09:52:34.48
  • 代码: 0xC0016016
  • 来源: [已编辑 - 我正在导入的表的正确名称]
  • 说明:无法解密受保护的 XML 节点“DTS:Password”,错误为 0x8009000B“密钥在指定状态下无效。”。您可能无权访问此信息。当存在加密错误时会发生此错误。验证正确的密钥是否可用。
  • 结束错误

小智 5

我在 Google 上查找错误代码并开始查看解决方案。我没有复述我如何找到解决方案的点点滴滴,而是按顺序呈现一个可操作的结果——至少对我和我正在使用的网络基础设施来说是这样。

  1. 在 SSIS 解决方案的“属性”面板(首先执行此操作)和该解决方案中的每个包中,将“ProtectionLevel”属性重置为EncryptSensitiveWithPassword并设置密码。包密码必须与解决方案密码匹配。
  2. 仔细检查一下,在调试模式下运行你的包,以确保没有其他问题出现。就我而言,我需要重新输入源服务器数据库的 sql server 密码。
  3. 重建您的 SSIS 解决方案。
  4. 在 SSMS 中,打开您的作业并打开相关任务的作业步骤属性。
  5. 选择“命令行”选项卡。出现“包密码”弹出窗口。输入您在步骤 1 中输入的密码。
  6. 选择“手动编辑命令行”并在 /DECRYPT 之后立即放置与步骤 1 相同的密码。
  7. 对运行此类包的每个作业步骤重复步骤 4-6。
  8. 按“确定”按钮并重新运行您的作业。

在那之后,我能够成功地运行我的工作。