You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Microsoft.ACE.Oledb.12.0创建SQL Server作业时报错7303、7412

SQL Server Agent作业调用OPENROWSET读取Excel失败解决方案

核心原因

手动执行SQL时使用的是当前登录用户的身份权限,而SQL Server Agent作业默认使用NT SERVICE\SQLSERVERAGENT本地服务账号执行,该账号在文件权限、驱动配置权限上存在不足,同时驱动匹配、配置参数错误也会触发该报错。

修复步骤

  • 修复SQL语法错误
    你提供的SQL语句末尾多了多余的星号,先修正为合法语法:
    SELECT * 
    FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0 xml;IMEX=2;HDR=YES;Database=C:\Excel\LanConnection.xlsx;',
                    'SELECT * FROM [Sheet1$]')
    
  • 授予文件目录访问权限
    右键点击C:\Excel\目录,选择【属性】-【安全】,添加NT SERVICE\SQLSERVERAGENT账号,授予该账号「列出文件夹内容」、「读取」、「读取和执行」权限,同时确认LanConnection.xlsx文件本身也继承了对应权限。
  • 确认ACE驱动位数匹配
    检查SQL Server的位数(可通过SELECT @@VERSION查询),安装对应位数的Microsoft Access Database Engine Redistributable,禁止32位和64位驱动混装。
  • 调整OLEDB提供程序配置
    以管理员身份在SSMS中执行以下SQL,启用分布式查询并配置ACE驱动参数:
    -- 开启高级配置选项
    sp_configure 'show advanced options', 1;
    RECONFIGURE;
    -- 启用即席分布式查询
    sp_configure 'Ad Hoc Distributed Queries', 1;
    RECONFIGURE;
    GO
    -- 配置ACE驱动允许进程内执行、支持动态参数
    EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1;
    EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1;
    GO
    
  • 修改作业执行身份(可选)
    如果以上配置仍无法解决问题,可以在SQL Server Agent作业的步骤设置中,将「运行身份」修改为拥有Excel文件访问权限、同时具备SQL Server对应数据库操作权限的域账号或本地用户账号,替代默认的NT SERVICE\SQLSERVERAGENT执行。

内容的提问来源于stack exchange,提问作者Karthik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 04:54:03