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

如何通过SSMS将MS Access 2016数据库完整导入SQL Server

Access 2016 数据库完整迁移至SQL Server 操作方案

一、解决SSMS导入向导找不到.accdb格式选项的问题

  • 先安装和SSMS位数匹配的Microsoft Access Database Engine 2016 Redistributable组件,SSMS默认是32位版本,优先安装32位的引擎组件。注意:安装前需关闭所有Office相关进程,否则会出现安装失败的问题
  • 安装完成后重启SSMS,重新打开导入导出向导,数据源列表就能找到Microsoft Access (Microsoft Access Database Engine)选项,选择后即可加载.accdb格式的Access 2016文件。
  • 如果仍找不到对应选项,可直接启动32位导入导出工具:打开路径C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\CommonExtensions\Microsoft\SSIS\150\Binn\DTSWizard.exe启动向导即可。

二、完整迁移表结构、数据及表间关系的步骤

  • 第一步:使用导入导出向导迁移基础表和数据:选择数据源为Access 2016文件,目标为你要导入的SQL Server实例,勾选「复制一个或多个表或视图的数据」,全选所有Access表后执行导入,完成后所有表的字段结构、数据都会同步到SQL Server中。
  • 第二步:从Access端导出表关系的SQL脚本:打开待迁移的Access数据库,按Alt+F11打开VBA编辑器,插入新的模块,粘贴以下代码并运行:
Sub ExportRelationshipsToSQL()
    Dim rel As Relation
    Dim fld As Field
    Dim sqlStr As String
    
    For Each rel In CurrentDb.Relations
        ' 跳过系统内置关系
        If Left(rel.Name, 4) <> "MSys" Then
            sqlStr = sqlStr & "ALTER TABLE " & rel.ForeignTable & " ADD CONSTRAINT " & _
                  "[" & rel.Name & "] FOREIGN KEY ("
            For Each fld In rel.Fields
                sqlStr = sqlStr & "[" & fld.Name & "],"
            Next fld
            sqlStr = Left(sqlStr, Len(sqlStr) - 1) & ") REFERENCES " & rel.Table & "("
            For Each fld In rel.Fields
                sqlStr = sqlStr & "[" & fld.ForeignName & "],"
            Next fld
            sqlStr = Left(sqlStr, Len(sqlStr) - 1) & ");" & vbCrLf & vbCrLf
        End If
    Next rel
    ' 脚本会输出到VBA的立即窗口,按Ctrl+G可调出立即窗口复制脚本
    Debug.Print sqlStr
End Sub
  • 第三步:在SSMS中打开目标数据库的查询窗口,粘贴第二步导出的SQL脚本并执行,即可完整重建所有Access端配置的表间外键关系。
  • 若需要迁移Access中的查询、宏等其他对象,可手动将Access查询逻辑转换为SQL Server的视图或存储过程即可。

内容的提问来源于stack exchange,提问作者N Byington

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 00:06:02