使用SSMS导入数据向导时,如何解决'microsoft.ace.oledb.12.0'未注册错误?
解决SSMS 20.1导入Excel时的Access Database Engine兼容问题
方案一:强制以32位模式运行SSMS
- 找到SSMS快捷方式,右键选择属性
- 在目标栏末尾添加参数
/32(注意前面加空格),例如原目标为"C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\Ssms.exe",修改后为"C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\Ssms.exe" /32 - 应用设置后重启SSMS,再尝试导入Excel文件
方案二:静默安装32位Access Database Engine 16(绕过Office版本检测)
- 获取32位Access Database Engine 16安装包
- 以管理员身份打开命令提示符,执行静默安装命令:
AccessDatabaseEngine.exe /quiet - 安装完成后重启SSMS,重新尝试导入操作
方案三:不依赖Access引擎的替代导入方法
- 将Excel转CSV格式导入
- 打开Excel文件,选择文件>另存为,保存类型选CSV(逗号分隔)(*.csv)
- 在SSMS中使用导入Flat File向导导入CSV文件
- 使用SSIS包导入
- 创建SSIS包,配置Excel源组件(确保SSIS位数与Office/Access引擎匹配),直接将数据导入SQL Server表
- 通过T-SQL查询直接导入
- 先启用Ad Hoc Distributed Queries:
sp_configure 'show advanced options', 1; RECONFIGURE; sp_configure 'Ad Hoc Distributed Queries', 1; RECONFIGURE; - 执行导入查询(根据Excel版本调整Provider):
SELECT * INTO 目标表名 FROM OPENROWSET('Microsoft.ACE.OLEDB.16.0', 'Excel 12.0 Xml;HDR=YES;Database=C:\你的Excel文件路径.xlsx', 'SELECT * FROM [Sheet1$]');
- 先启用Ad Hoc Distributed Queries:
内容的提问来源于stack exchange,提问作者Intensivist
相关产品推荐
相关产品推荐

