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

SQL Server 2022使用OPENROWSET读取XLS文件报错求助

解决SQL Server 2022读取XLS文件时的权限/独占打开错误

问题复现

读取XLSX文件正常,但读取旧版XLS文件时出现以下报错:

The Microsoft Access database engine cannot open or write to the file ''. It is already opened exclusively by another user, or you need permission to view and write its data.

执行的SQL代码如下:

DECLARE @path NVARCHAR(MAX) = '\SRV-SQL\MSSQLSERVER\Data\Test\Test.xls'

SET @path = REPLACE(@path, @@SERVERNAME, 'localhost')

DECLARE @cmd NVARCHAR(MAX) = 'SELECT * FROM OPENROWSET(''Microsoft.ACE.OLEDB.12.0'',''Excel 12.0;Database=' + @path + ';HDR=NO;'',
''SELECT * FROM [MyTestSheet$]'')'

EXEC(@cmd)

解决方案

1. 修正连接字符串的Excel版本参数

XLS属于Excel 97-2003格式,原连接字符串中Excel 12.0是针对XLSX格式的配置,需改为Excel 8.0匹配旧版格式:

DECLARE @path NVARCHAR(MAX) = '\SRV-SQL\MSSQLSERVER\Data\Test\Test.xls'

SET @path = REPLACE(@path, @@SERVERNAME, 'localhost')

DECLARE @cmd NVARCHAR(MAX) = 'SELECT * FROM OPENROWSET(''Microsoft.ACE.OLEDB.12.0'',''Excel 8.0;Database=' + @path + ';HDR=NO;'',
''SELECT * FROM [MyTestSheet$]'')'

EXEC(@cmd)

2. 确保ACE驱动与SQL Server位数匹配

SQL Server 2022为64位版本,必须安装64位的Microsoft Access Database Engine(推荐2016 Redistributable版本)。禁止同时安装32位和64位驱动,否则会引发兼容性冲突。

3. 检查文件权限与占用状态

  • 关闭所有可能打开该XLS文件的程序(如Excel、WPS等),确认文件未被独占锁定。
  • 为SQL Server服务账户(通常为NT SERVICE\MSSQLSERVER)配置文件所在共享目录及本地目录的读取权限,需同时确保共享权限和NTFS权限设置正确。

4. 改用本地路径测试

共享路径的权限验证逻辑较复杂,可先将XLS文件复制到SQL Server本地目录(如C:\SQLData\Test),修改路径后重试:

DECLARE @path NVARCHAR(MAX) = 'C:\SQLData\Test\Test.xls'

DECLARE @cmd NVARCHAR(MAX) = 'SELECT * FROM OPENROWSET(''Microsoft.ACE.OLEDB.12.0'',''Excel 8.0;Database=' + @path + ';HDR=NO;'',
''SELECT * FROM [MyTestSheet$]'')'

EXEC(@cmd)

5. 启用Ad Hoc Distributed Queries

若SQL Server未启用该选项,会导致OPENROWSET无法正常执行,执行以下命令开启:

sp_configure 'show advanced options', 1;
RECONFIGURE;
sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;

内容的提问来源于stack exchange,提问作者Ondřej Vacek

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 09:54:54