You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Access 2016(32位Click-to-Run)数据迁移至SQL Server 2016遇阻求助

解决32位Click-to-Run版Access 2016迁移至SQL Server 2016的SSMA兼容问题

我之前碰到过完全一样的情况——32位Click-to-Run的Access 2016没法用SSMA for Access v7.6.0连接,因为这个版本的SSMA只支持传统MSI安装的Access组件,不兼容Click-to-Run部署的版本。下面给你几个靠谱的解决办法:

方案一:用临时Access数据库中转(适配SSMA)

这是最贴近你原本计划的路径,绕开兼容性限制:

  • 打开你的Click-to-Run Access应用,选中所有需要迁移的后端表,右键选择导出,把它们保存成一个独立的.accdb文件(临时库)。
  • 找一台安装了32位MSI版Access 2016的机器(如果没有的话,临时装一个也可以,注意和Click-to-Run版本分开),打开这个临时库确认所有数据正常。
  • 运行SSMA for Access v7.6.0,连接这个临时Access数据库,跟着向导一步步完成迁移到SQL Server 2016的操作就行。

方案二:直接用SQL Server导入导出向导

跳过SSMA,用SQL Server自带的工具完成迁移,步骤更简单:

  • 打开SQL Server Management Studio 2016,连接到你的目标SQL Server实例。
  • 右键点击要导入数据的目标数据库,选择任务导入数据
  • 在数据源选项里选Microsoft Access,然后浏览选中你的Click-to-Run Access数据库文件。划重点:因为你的Access是32位的,必须运行32位版本的导入导出向导,路径一般是C:\Program Files (x86)\Microsoft SQL Server\130\DTS\Binn\DTSWizard.exe(SQL Server 2016的版本号是130),不然会出现驱动不匹配的错误。
  • 跟着向导配置目标连接、选择要导入的表、调整数据类型映射(比如Access的AutoNumber对应SQL的IDENTITY),最后执行导入即可。

方案三:更换Access安装类型(长期最优解)

如果条件允许,把你的Click-to-Run版Access换成MSI安装的32位Access 2016,这样就能直接用SSMA v7.6.0连接原Access数据库,按照官方推荐的步骤完成迁移,这是最顺畅、最少坑的路径。

额外注意事项

  • 迁移前务必备份原Access数据库和目标SQL Server数据库,避免数据丢失。
  • 如果Access里有查询、宏等对象,SSMA可以把查询迁移成SQL Server的视图或存储过程,但表单、报表这些前端对象还是留在Access里,迁移后需要重新链接到SQL Server的表。
  • 检查数据类型映射是否符合你的业务需求,比如Access的Memo字段默认会映射成SQL的NVARCHAR(MAX),如果有长度限制可以手动调整。

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

火山引擎 最新活动