本地SQL Server 2022使用Microsoft.ACE.OLEDB.16.0读取Excel失败求助
问题描述
本地安装SQL Server 2022(与公司服务器同版本)后,无法通过OLE DB读取Excel文件。已安装OLE DB组件、下载安装accessdatabaseengine_X64.exe,甚至卸载重装过SQL Server,但仍报错:
OLE DB provider 'Microsoft.ACE.OLEDB.16.0' for linked server '(null)' returned message 'Failure creating file'
尝试执行以下脚本后问题仍未解决:
EXEC sp_configure 'Show Advanced Options', 1 RECONFIGURE GO EXEC sp_configure 'Ad Hoc Distributed Queries', 1 RECONFIGURE GO EXEC sp_MSSet_oledb_prop N'Microsoft.ACE.OLEDB.16.0', N'AllowInProcess', 1 GO EXEC sp_MSSet_oledb_prop N'Microsoft.ACE.OLEDB.16.0', N'DynamicParameters', 1 GO
排查与解决步骤
- 检查文件权限与路径
- 确保Excel文件路径无中文、空格或特殊字符,使用绝对路径(如
C:\Temp\data.xlsx)测试。 - 给SQL Server服务账号(默认是
NT SERVICE\MSSQLSERVER)赋予Excel文件所在文件夹的读取/写入权限——ACE引擎需要临时创建文件,写入权限是必要的。
- 确保Excel文件路径无中文、空格或特殊字符,使用绝对路径(如
- 验证ACE引擎安装与位数匹配
- 确认SQL Server是64位版本,且安装的是64位的
accessdatabaseengine_X64.exe(若SQL是32位则需安装32位版本,务必位数一致)。 - 若已有32位Office组件,安装ACE引擎时用静默命令避免冲突:
accessdatabaseengine_X64.exe /quiet
- 确认SQL Server是64位版本,且安装的是64位的
- 调整SQL Server服务配置
- 打开SQL Server配置管理器,找到对应SQL Server服务,右键选择「属性」-「登录」。
- 将服务登录账号改为本地管理员账号(而非系统账号),重启SQL Server服务后再次测试——系统账号可能受限于权限无法访问本地文件或创建临时文件。
- 检查临时文件夹权限
ACE引擎会使用系统临时文件夹(C:\Windows\Temp或服务账号的临时目录)创建临时文件,确保SQL Server服务账号对该文件夹有完全控制权限。 - 测试基础连接
使用OPENROWSET直接测试最简连接语句,排除复杂逻辑干扰:SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.16.0', 'Excel 12.0 Xml;HDR=YES;Database=C:\Temp\test.xlsx', 'SELECT * FROM [Sheet1$]')
内容的提问来源于stack exchange,提问作者Diego Ignacio Rojas Gonzalez
相关产品推荐
相关产品推荐

