使用OPENROWSET导入Excel至SQL Server 2019 Express时遇错误求助
Excel数据导入SQL Server 2019 Express 64位报错问题
问题详情
尝试执行以下SQL语句将Excel数据导入SQL Server 2019 Express(64位):
USE DB1; GO EXEC sp_configure 'show advanced options', 1 RECONFIGURE WITH OVERRIDE GO EXEC sp_configure 'ad hoc distributed queries', 1 RECONFIGURE WITH OVERRIDE GO SELECT * INTO ContractHeader FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0; Database=D:\Users\User1\Downloads\Book1.xlsx', [Sheet1$]); GO
执行后出现错误,且每次操作需手动启动SQL服务:
配置选项'show advanced options'已从1更改为1。请运行RECONFIGURE语句进行安装。
配置选项'Ad Hoc Distributed Queries'已从1更改为1。请运行RECONFIGURE语句进行安装。Msg 109, Level 20, State 0, Line 8 > 从服务器接收结果时发生传输级错误。(提供程序: 共享内存提供程序, 错误: 0 - 管道已结束。)
解决步骤
1. 修复SQL服务启动问题
打开services.msc(运行中输入),找到SQL Server (SQLEXPRESS)服务:
- 将启动类型改为自动,避免每次手动启动。
- 确保服务当前处于运行状态,若未运行则手动启动。
2. 解决传输级错误(管道已结束)
- 匹配ACE驱动位数:SQL Server是64位,必须安装64位版本的Microsoft Access Database Engine 2010 Redistributable,32位驱动会因位数不兼容导致连接失败。
- 调整OPENROWSET参数:若Excel包含表头,添加
HDR=YES参数,修改后的语句:USE DB1; GO SELECT * INTO ContractHeader FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0 Xml; HDR=YES; Database=D:\Users\User1\Downloads\Book1.xlsx', [Sheet1$]); - 检查文件权限:确保SQL Server服务账户对Excel文件及所在目录有读取权限,可临时将文件移至
C:\Temp等权限开放的目录测试。
3. 处理配置选项提示
提示中显示配置选项本来就是1(已启用),无需重复执行sp_configure和RECONFIGURE语句,后续直接执行导入语句即可。
4. 替代导入方案(若OPENROWSET仍失败)
使用SQL Server导入导出向导:
- 在SSMS中右键目标数据库
DB1,选择任务→导入数据。 - 数据源选择
Microsoft Excel,指定目标文件,按向导步骤完成导入,该方式兼容性更强,操作更直观。
内容的提问来源于stack exchange,提问作者Paksos
相关产品推荐
相关产品推荐

