已部署的 SSIS 包 Oracle 连接管理器出现错误并显示“访问被拒绝”。 OLE DB 错误代码 0x80070005

问题描述 投票:0回答:1

对于 SSIS 开发来说仍然很陌生,并且正在努力克服当前的障碍。

我有一个相当基本的 SSIS 包,它从存储在文件共享上的 Excel 工作表中读取数据,并使用 Oracle 连接管理器等待 [查找] 结果,或者使用文件中的行更新现有数据或插入新行。

在 Visual Studio 中一切都按预期运行良好,以我的个人用户身份使用 Project 编写,所有包均被保护为 ProtectionLevel: EncrypSensitiveWithUserKey。正如部署后所预期的那样,NT Service\SQLSERVERAGENT 不像我的个人用户那样具有对文件共享的上下文访问权限,因此已设置代理帐户并授予文件共享上的文件夹安全访问权限。

代理成功完成从文件共享上的 Excel 文件读取数据的任务,但是,在第二步“数据流任务”失败并出现以下错误:

  • 数据行任务:错误:查找 - 检查数据库中存在的记录验证失败并返回错误代码 0xC020801C。
  • 数据流任务:错误:SSIS 错误代码 DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER。对连接管理器“XXXXXX (OLE DB)”的 AcquireConnection 方法调用失败,错误代码为 0xC0202009。在此之前可能会发布错误消息,其中包含有关获取连接方法调用失败原因的更多信息。
  • {包}:错误。 SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80070005。 OLE DB 记录可用。来源:“Microsoft OLE DB 服务组件” Hresult:0x80070005 描述:“访问被拒绝。”

我尝试过的事情:

  • 两台机器似乎都是 64 位,但我尝试在“高级”下配置作业步骤,以在新作业调用包时强制以 32 位执行。这导致它抱怨 32 位未安装/不存在,所以我改回来了。
  • 在阅读了许多线程后,似乎ProtectionLevel:EncryptSensitiveWithUserKey不是(?)正确的设置,因为我希望多个团队成员能够访问、执行和配置这些包,包括可能的SQLServerAgent(如果可行) )或这个新的代理帐户。为此,我尝试了两件事:
    • 将项目和所有包更改为DontSaveSensitive,但这导致我的包即使在测试时以我的个人用户身份运行的 Visual Studio 中也失败。
    • 将项目和所有包更改为 EncrypSensitiveWithPassword,我的测试执行在 Visual Studio 中运行良好,但在右键单击 --> 将包部署到 SQL Server 时,继续失败,并出现此 访问被拒绝。错误。

代理帐户显示正确,具有:

  • 两者[X]公共,[X]系统管理员角色已选中
  • [X] 操作系统 (CmdExec)、[X] SQL Server Integration Services Package 子系统(SSIS 包执行代理)均有效。
  • 拥有 [X] Grant 权限,从 SSISDB 一直到项目的集成服务目录节点结构。

我错过了什么?任何专家都可以建议如何正确配置它才能工作吗?

visual-studio ssis sql-server-2019
1个回答
0
投票

只是填写可能遇到类似问题的任何其他人 - 该解决方案与 ProtectionLevels 无关,我现在知道,ProtectionLevels 比部署更属于 Package/Repo 方面。就我而言,解决方案最终正是模糊错误消息所讨论的内容。我的 SSIS 包中的代理用户拥有正确的凭据、对源文件的访问权限等。

[Lookup] 被轰炸并且无法建立 Oracle 连接来检查现有记录是由于 AD 代理用户没有对包含 TNSNAMES.ora 和子文件夹的 C:\Oracle 文件夹的文件夹级别权限与 Oracle 客户;

“访问被拒绝。”

将 C:\Oracle 的所有子文件夹和项目配置为从父级继承并授予读取、写入和修改权限后 - 绝对需要修改权限才能使其工作 - 一切都开始按预期工作。

感谢上述协助调查此问题的人员提供的所有帮助和建议。

© www.soinside.com 2019 - 2024. All rights reserved.