SSIS包执行作业失败

时间:2014-08-14 10:16:24

标签: sql sql-server ssis sql-server-2008-r2

美好的一天,

我将一个包从SSIS导入到SQL以作为Job运行。 如果我在MSSMS中手动执行SSIS中的包,它会成功执行 一旦我将它作为一项工作运行,我就会收到以下错误:

  

以用户身份执行:NT AUTHORITY \ LOCAL SERVICE。 Microsoft(R)SQL Server   执行64位版权的软件包实用程序版本10.50.1600.1   (C)Microsoft Corporation 2010.保留所有权利。入门:   12:10:22 PM错误:2014-08-14 12:10:22.07代码:0xC0016016
  来源:说明:无法解密受保护的XML节点   “DTS:密码”,错误0x8009000B“密钥无效,可用于   指定的状态。“。您可能无权访问此状态   信息。出现加密错误时会发生此错误。   验证是否有正确的密钥。结束错误错误:   2014-08-14 12:10:22.24代码:0xC0202009来源:   TritonFuelImport连接管理器“41.160.218.141.CCManager.sa”
  描述:SSIS错误代码DTS_E_OLEDBERROR。 OLE DB错误   发生了。错误代码:0x80040E4D。 OLE DB记录可用。   来源:“Microsoft SQL Server Native Client 10.0”Hresult:0x80040E4D   说明:“用户'sa'登录失败。”。结束错误错误:   2014-08-14 12:10:22.24代码:0xC020801C来源:数据流任务   OLE DB目标[15]描述:SSIS错误代码   DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER。该   AcquireConnection方法调用连接管理器   “41.160.218.141.CCManager.sa”失败,错误代码为0xC0202009。   在此之前可能会发布错误消息以获取更多信息   为什么AcquireConnection方法调用失败。结束错误错误:   2014-08-14 12:10:22.24代码:0xC0047017来源:数据流任务   SSIS.Pipeline描述:组件“OLE DB Destination”(15)   验证失败并返回错误代码0xC020801C。结束错误   错误:2014-08-14 12:10:22.24代码:0xC004700C来源:数据   Flow Task SSIS.Pipeline描述:一个或多个组件失败   验证。结束错误错误:2014-08-14 12:10:22.24代码:   0xC0024107来源:数据流任务描述:有   任务验证期间的错误。结束错误DTExec:包   执行返回DTSER_FAILURE(1)。开始于:12:10:22 PM   完成时间:下午12:10:22经过:0.187秒。包执行   失败。步骤失败了。

有人可以协助我帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

从Visual Studio执行包时,它在您的用户主体下运行。当它运行SQL代理时,它在SQL Server帐户下执行(使用本地服务或为此目的设置的域帐户)。现在,您的软件包的一部分(可能是连接管理器)具有名为EncryptSensitive和ProtectionLevel(https://msdn.microsoft.com/en-us/library/ms141747.aspx)的属性,默认情况下会将其设置为您的用户帐户。

当SQL Agent尝试执行时,它无法使用自己的密钥解密连接管理器上的敏感数据(可能是密码)。有两种解决方法:

答案 1 :(得分:0)

在visual studio数据工具中需要更改一个属性。在属性选项卡中查看,有一个加密密码的选项。内存有3种不同的选择。如果这不起作用,请尝试在SQL Server管理工作室中获取安全性,然后使用凭据。然后单击“添加凭据”并添加成功运行作业的用户的凭据。然后在你的工作步骤中,进入步骤并设置"运行为"到您创建的凭据。我还会检查作业步骤的高级选项卡,以确保用户名和密码的属性正确,有时它们不会从数据工具部署,您必须手动将它们添加到作业步骤中代理人。