旧SSIS包无法读取XLSX文件,但XLS文件可正常读取
解决SQL Server 2012 SSIS包读取.xlsx文件时“找不到可安装的ISAM”问题
问题根源
SQL Server 2012所在的老旧服务器大概率存在Microsoft ACE OLEDB驱动缺失、版本不匹配,或连接字符串格式错误的情况,导致无法正常解析.xlsx文件。
具体解决步骤
1. 安装/匹配对应位数的Microsoft ACE OLEDB驱动
- SSIS包的运行位数(32/64位)必须与ACE驱动版本完全一致:
- 若SSIS以32位模式运行,安装32位Microsoft Access Database Engine 2010 Redistributable
- 若以64位模式运行,安装64位版本
- 注意:如果服务器已安装32位Office,直接安装64位ACE驱动会报错,需使用被动安装命令:
AccessDatabaseEngine_x64.exe /passive
2. 修正连接字符串格式
原连接字符串存在格式隐患,调整为以下标准写法:
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\<my server>\shared\<the folder>\<filename>.xlsx;Extended Properties="Excel 12.0 Xml;HDR=NO;IMEX=1";
关键调整点:
- 共享路径中的单反斜杠改为双反斜杠(
\\),避免转义错误 - 添加
IMEX=1参数,强制以混合模式读取数据,规避数据类型冲突引发的隐性问题 - 确保
Extended Properties内部参数用分号分隔,引号嵌套逻辑正确
3. 匹配SSIS运行模式与驱动位数
在SQL Server数据工具(SSDT)中调整项目运行模式:
- 右键SSIS项目 → 属性 → 调试 → 找到
Run64BitRuntime选项 - 若安装32位ACE驱动,取消勾选;若安装64位驱动,勾选该选项
4. 补充权限验证
- 确认SQL Server代理服务(若包由代理执行)的运行账户对目标共享文件夹拥有读写权限
- 检查服务器临时文件夹(
C:\Windows\Temp)权限,确保ACE驱动运行时可读写临时文件
内容的提问来源于stack exchange,提问作者Djones4822
相关产品推荐
相关产品推荐

