SSIS Excel 临时目录权限问题

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

数据流任务:错误:Excel 源在预执行阶段失败并返回错误代码 0xC02020E8。

数据流任务:错误:打开“Sheet$”的行集失败。检查数据库中是否存在该对象。

  1. SSIS 包几天前就可以工作了。
  2. 包成功从源服务器下载.xlsx文件
  3. 从 SSISDB 手动启动时包运行成功
  4. 从 SQL 作业运行时包失败
  5. 代理设置正确
  6. 当我将在代理上配置的域帐户放入 SSIS 服务器上的管理员组中时,作业成功运行
  7. 从我在研究这个问题时读到的所有内容来看,这似乎与 Excel 电子表格的大小有关。

运行失败包的作业按顺序运行其他三个包。包 1 和 3 失败,包 2 和 4 工作正常。所有包都使用不同的 Excel 电子表格。

不 - 我无法让提供商向我们提供 .csv 文件(嗯 - 我们正在询问,但不能保证他们会这样做)。

否 - 我不会在 SSIS 服务器上安装 Excel,以便我们的 BI 开发人员可以编写程序将 .xlsx 转换为 .csv - 但我正在考虑安装 Python,以便他们可以做到这一点

否 - 我不会将运行作业的服务帐户保留在服务器上的管理员组中

我所查看的所有内容都表明,这是 Access 数据库驱动程序(我们使用 ACE 12 驱动程序 - 现在我们使用 ACE 16 驱动程序 - 64 位)正在写入其临时数据的某些临时文件夹的权限问题服务帐户无权访问该服务。

我已向运行作业的服务帐户授予完全控制权(这与运行 SSIS 服务的服务帐户不同)

C:\UsersAppData\Local\Temp

c:\Windows\ServiceProfiles\NetworkService\AppData\Local\Temp

c:\users\Default\AppData\Local\Temp

c:\windows\serviceprofiles\localservice\AppData\Local\Temp

c:\Windows\Temp

没有喜悦。

我还使用代理帐户凭据在本地登录到服务器,以便创建该代理帐户的用户配置文件。该作业运行一次,然后每次都失败。

唯一有效的方法是授予代理管理员对服务器的访问权限。不用说 - 这似乎不是一件好事。

有什么想法吗?

是的 - 我确信 .xlsx 文件没有更改其格式 - 也没有更改数据所在的工作表名称 - 正如我所说,手动启动时包运行良好。当 SQL 代理作业运行它时,它就会失败 - 并且只有当代理不在本地服务器管理员组中时才会失败。

最后,我们尝试过使用32位模式,但无法同时安装32位和64位的驱动程序。

SQL Server 2016、Windows Server 2012 R2

sql-server excel ssis
4个回答
0
投票

检查系统日志中是否有任何 COM 服务器应用程序错误条目。如果您找到该条目,那么。

  1. 将用户添加到 DCOM 组
  2. 将用户添加到 Microsoft Sql Server 集成服务
  3. 将用户添加到 Microsoft Excel 应用程序

0
投票

您有 4 个步骤,并且都在不同的 Excel 文件上执行相同的操作,对吗? 其中两个步骤对于同一用户成功,另外两个步骤失败,对吗?

我将采取的故障排除步骤是。

  1. 确保所有 4 个文件夹具有相同的权限。另请检查文件权限,因为这可能与文件夹权限不同。
  2. 检查文件源,我遇到了非常类似的问题,并注意到如果我在将文件放入文件夹之前打开并保存文件,则过程会成功。我要求供应商始终打开文件以确保它是好的,然后保存它。问题为我解决了,尽管他们还没有弄清楚该文件。 3.我将问题放在一个文件夹中,成功查看是文件问题还是文件夹问题

0
投票

我刚刚完成了 Process Monitor 的故障排除。似乎有一种叫做办公室缓存的东西,而且它的位置是难以捉摸的……至少可以说。对于现代 Windows 版本中的默认配置文件应为 c:\Users\Default\AppData\Local\Microsoft\Windows\NetCache\Content.MSO。绝对不行...


0
投票

对我们有用的是将代理帐户完全控制权授予 C:\Users\Default\

在这里找到答案:如果行太多,ssis excel导入失败

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