SSMA for Access连接源数据库失败:外部组件抛出异常
解决SSMA for Access迁移时OLEDB连接失败错误(错误码-2147467259)
问题背景
环境:Windows 11,SSMA for Access 9.4,SQL Server Express 2016,Access数据库为.accdb 2007-2016格式。
此前迁移正常,近期迁移步骤突然失败,核心报错:
[Error: Datamigrator] [25208/1] [2023-10-23 13:43:26]: Establishing connection with the source database failed. [Error: Datamigrator] [25208/1] [2023-10-23 13:43:26]: Exception: External component has thrown an exception. site: Void GetDataSource(System.Data.OleDb.OleDbConnectionString, System.Data.OleDb.DataSourceWrapper ByRef) source: System.Data error code: -2147467259...
已确认SQL目标库连接正常,更换此前成功迁移的数据库仍报错,排除数据库本身问题;重装SSMA、回退旧版本、尝试控制台模式均无效,怀疑.NET Framework 4.8安装影响,推测OLEDB组件损坏。
解决方案步骤
1. 修复/重装Access OLEDB驱动
- 卸载现有驱动:打开「设置」→「应用」→「应用和功能」,搜索“Microsoft Access Database Engine”并卸载。
- 匹配架构安装:根据SSMA的架构(32/64位)下载对应版本的驱动,以管理员身份运行安装包;若出现兼容性提示,右键安装包→「属性」→「兼容性」,勾选“以兼容模式运行这个程序”并选择Windows 10后再安装。
2. 修复.NET Framework 4.8
- 管理员身份打开命令提示符,依次执行:
DISM /Online /Cleanup-Image /RestoreHealthsfc /scannow - 或下载.NET Framework 4.8官方修复工具,运行完成修复。
3. 重置OLEDB注册表项
- 按Win+R输入
regedit打开注册表编辑器,导航到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\OLEDB。 - 右键导出该键值备份,然后删除此键,重启电脑后重新安装Access OLEDB驱动,系统会自动重建相关注册表项。
4. 验证SSMA与驱动架构一致性
- 查看SSMA架构:右键SSMA快捷方式→「属性」→「详细信息」,确认是32位还是64位。
- 确保安装的Access OLEDB驱动架构与SSMA完全匹配(例如SSMA是32位则必须安装32位驱动,即使系统是64位)。
5. 测试OLEDB连接可用性
- 使用PowerShell测试基础连接:
若测试失败,说明OLEDB组件问题未解决,需重点排查驱动安装和系统组件修复。$connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\path\to\your\target.accdb;" $conn = New-Object System.Data.OleDb.OleDbConnection($connString) try { $conn.Open() Write-Host "OLEDB连接测试成功" } catch { Write-Host "OLEDB连接测试失败: $_" } finally { $conn.Close() }
内容的提问来源于stack exchange,提问作者Greydog1
相关产品推荐
相关产品推荐

