从JOB执行SSIS包时出错

时间:2013-04-01 14:26:30

标签: ssis

消息

  

以用户身份执行:UKDBT91DB05V \ SYSTEM。 Microsoft(R)SQL Server   执行包实用程序版本10.50.2500.0以获取64位版权   (C)Microsoft Corporation 2010.保留所有权利。入门:   14:58:34错误:2013-04-01 14:58:34.45代码:0xC0016016
  来源:说明:无法解密受保护的XML节点   “DTS:Property”,错误0x8009000B“密钥无效,可用于   指定的状态。“。您可能无权访问此状态   信息。出现加密错误时会发生此错误。   验证是否有正确的密钥。结束错误错误:   2013-04-01 14:58:34.76代码:0xC001000E来源:   ReceiveDGDinformation描述:连接“stock”不是   找到。当时,Connections集合会抛出此错误   找不到特定的连接元素。结束错误错误:   2013-04-01 14:58:34.80代码:0xC0202009来源:   ReceiveDGDinformation连接管理器“Stock”描述:SSIS   错误代码DTS_E_OLEDBERROR。发生OLE DB错误。错误   代码:0x80040E4D。 OLE DB记录可用。资料来源:“微软   SQL Server Native Client 10.0“Hresult:0x80040E4D描述:   “用户'DOTCOM \ UKDBT91DB05V $'登录失败。”结束错误错误:   2013-04-01 14:58:34.80代码:0xC020801C来源:填充   Staginng表填充DGD临时表[34]描述:SSIS   错误代码DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER。该   AcquireConnection方法调用连接管理器“Stock”失败   错误代码0xC0202009。之前可能会发布错误消息   这有关于AcquireConnection方法调用的原因的更多信息   失败。结束错误错误:2013-04-01 14:58:34.80代码:0xC0047017   来源:填充Staginng表SSIS.Pipeline描述:   组件“填充DGD临时表”(34)验证失败   返回错误代码0xC020801C。结束错误错误:2013-04-01   14:58:34.80代码:0xC004700C来源:填充Staginng表   SSIS.Pipeline描述:一个或多个组件失败   验证。结束错误错误:2013-04-01 14:58:34.80代码:   0xC0024107来源:填充Staginng表描述:那里   任务验证期间出错。结束错误DTExec:包   执行返回DTSER_FAILURE(1)。开始时间:14:58:34完成:   14:58:34经过:0.624秒。包执行失败。该   步骤失败。

错误消息的有意义位

  • 无法解密受保护的XML节点“DTS:Property”,错误为0x8009000B“密钥无法在指定状态下使用。”。您可能无权访问此信息。出现加密错误时会发生此错误
  • 用户'DOTCOM \ UKDBT91DB05V $'
  • 登录失败

1 个答案:

答案 0 :(得分:6)

这可能是您的ProtectionLevel设置以及如何配置作业的问题。

如果ProtectionLevel处于默认的“EncryptSensitiveWithUserKey”设置,则开发环境使用依赖于正在进行开发的用户的密钥来加密连接字符串数据库密码之类的内容。将它部署到生产服务器并安排SQL Server代理作业后,它很可能在不同的用户帐户下运行,然后它将无法解密数据库密码。你会收到这个错误。

一种可能性是确保开发用户和作业执行用户是同一个用户帐户,但这不是一个好主意。通常,您希望生产用户帐户与开发用户帐户分开。

相反,您应该将ProtectionLevel设置为“DontSaveSensitive”。然后根本不会使用SSIS包保存密码。您可以为连接字符串创建配置文件,但密码也不会保存到配置文件中。如果要包含密码,则必须手动编辑配置文件。但最好的方法是在计划执行SSIS包的作业时配置密码。这样可以将密码保存在一个安全的地方,并且它不会在SSIS包的所有地方浮动。

一些有用的链接herehere

祝你好运!