首页 > 解决方案 > 包含 SQL 身份验证的 SSIS 在 IDE 中运行,但在 SQL Server 代理作业中失败

问题描述

我有一个 SSIS 包,它从平面文件中获取数据并将其写入 SQL。它在 OLEDB 连接中使用 Windows 身份验证的 IDE 中运行良好。但我希望任何人都可以运行它,而不是使用我的 Windows 身份验证设置,所以我将身份验证更改为 SQL Auth。当我在 SQL Job 中运行这个包时,它失败了,但在 IDE 中运行良好。会有什么问题?

我的包级别 ProtectionLevel 是:EncryptSensitiveWithUserKey

我是否需要将 ProtectionLevel 更改为 EncryptSensitiveWithPassword?

这是我得到的错误:无法解密受保护的 XML 节点“DTS:Password”,错误为 0x8009000B“密钥在指定状态下无效。”。您可能无权访问此信息。当存在加密错误时会发生此错误。验证正确的密钥是否可用。


最糟糕的是,我现在恢复为在 Windows Auth 本身中运行,但现在我遇到了一个奇怪的错误 -

以用户身份执行:。适用于 64 位的 Microsoft (R) SQL Server 执行包实用程序版本 12.0.4100.1 版权所有 (C) Microsoft Corporation。版权所有。开始时间:上午 10:46:00 错误:2019-08-15 10:46:09.43 代码:0xC0209303 源:Import_Freight_Data 连接管理器“源 Excel (xls) 文件”描述:请求的 OLE DB 提供程序 Microsoft.Jet.OLEDB.4.0未注册。如果未安装 64 位驱动程序,请在 32 位模式下运行该软件包。错误代码:0x00000000。OLE DB 记录可用。来源:“Microsoft OLE DB 服务组件”Hresult:0x80040154 描述:“类未注册”。结束错误错误:2019-08-15 10:46:09.43 代码:0xC020801C 源:从 xls 文件源获取数据 - XLS 文件导入 [96] 描述:SSIS 错误代码 DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER。对连接管理器“Source Excel (xls) File”的 AcquireConnection 方法调用失败,错误代码为 0xC0209303。在此之前可能会发布错误消息,其中包含有关 AcquireConnection 方法调用失败原因的更多信息。结束错误错误:2019-08-15 10:46:09.43 代码:0xC0047017 源:从 xls 文件 SSIS.Pipeline 获取数据描述:源 - XLS 文件导入验证失败并返回错误代码 0xC020801C。结束错误错误:2019-08-15 10:46:09.43 代码:0xC004700C 来源:从 xls 文件 SSIS.Pipeline 获取数据描述:一个或多个组件验证失败。End Error 错误:2019-08-15 10:46:09.43 代码:0xC0024107 来源:从 xls 文件中获取数据 描述:任务验证期间出现错误。结束错误 DTExec:包执行返回 DTSER_FAILURE (1)。开始时间:上午 10:46:00 结束时间:上午 10:46:09 经过时间:8.906 秒。包执行失败。步骤失败。

标签: sqlauthenticationssisjobs

解决方案


当您使用 EncryptSensitiveWithUserKey 时,SSIS 将使用您的 Windows 身份作为身份验证手段解密敏感值。当此作业在 SQL 代理中运行时,它不再在您的帐户下运行,并且无法解密密码。

可以使用 EncryptSensitiveWithPassword,但这意味着当您从 SQL 代理调用包时,您需要以明文形式存储包密码。一些更可取的选择是:


推荐阅读