| 〖文章分类:电脑·手机·网络 / 网站设计·开发·优化〗〖阅读选项〗 |
使用微软提供的数据库迁移软件 Microsoft SQL Server Migration Assistant for Access(简称:SSMA for Access,SSMA),可以很方便的将 Access 2003 迁移到 SQL Server 2016。我这里源数据库是 Microsoft Access 2003,准备迁移到虚拟主机的 Microsoft SQL Server 2016,我本机没有安装 Microsoft SQL Server 2016 软件,通过 SSMA 软件直接把数据上传/导入到虚拟主机的 Microsoft SQL Server 2016。
Microsoft Access 2003 数据库引擎 Microsoft.Jet.OLEDB.4.0,需要安装 SSMA 32位的,我这里安装:Microsoft SQL Server Migration Assistant for Access V9.5.0 x86.msi。
V9.5.0:支持 SQL Server 2012/2014/2016/2017/2019/2022,Azure SQL Database/Managed Instance
V10.6.26238:支持 Azure SQL Database/Managed Instance,SQL Server 2025/2022/2019
一、安装 SSMA:
1、如果出现这个界面,说明你的系统缺少 Access 数据库引擎,单击[Download]打开微软网站下载页面,单击[Next]继续安装:

我这里安装:Microsoft Office Access Database Engine 2007 V12.0.4518.1014.exe
2、软件协议:

3、典型安装,自定义安装,完整安装:

4、检测/更新新版本:

5、安装完成,运行 Microsoft SQL Server Migration Assistant for Access(运行时检测你的系统是否安装 Microsoft .NET Framework,如果没有,按提示下载安装,要求 Microsoft .NET Framework 4.7.2 或更高版本),关闭向导:
 [在新窗口浏览图片]
二、新建项目:
6、新建项目(File -> New Project),填写/选择:项目名称、保存位置、数据库版本:

 [在新窗口浏览图片]
7、添加数据库(Add Databases),展开数据库,看到表名(如果没有安装 Access 数据库引擎,此时看不到表名):

 [在新窗口浏览图片]
8、创建报告(选择表名,右键选择 Create Report),创建完成,生成网页报告,如果 Error 和 Warning 有信息,按提示信息修改一下数据库(如果没有安装 Access 数据库引擎,提示消息:There is nothing to process):
 [在新窗口浏览图片]
 [在新窗口浏览图片]
9、项目设置(Tools -> Project Settings);General -> Tables:Add timestamp columns 选择 Never(默认迁移成功后,每个表都会自动新建一个字段 SSMA_TimeStamp,选择 Never 表示禁用);Type Mapping:date 修改为 datetime,删除 memo (for Access 97)、text (for Access 97):
 [在新窗口浏览图片]
 [在新窗口浏览图片]
 [在新窗口浏览图片]
三、连接数据库:
10、连接虚拟主机的 SQL Server 2016 数据库(Connect to SQL Server),填写/选择:数据库服务器地址、端口、数据库名称、认证方式、用户名、密码,选择“Encrypt Connection”和“Trust Server Certificate”:
 [在新窗口浏览图片]
 [在新窗口浏览图片]
11、转换架构(Access Metadata Explorer -> 表名 -> Convert Schema),转换成功,在 SQL Server Metadata Explorer 窗口就能看到表名:
 [在新窗口浏览图片]
 [在新窗口浏览图片]
12、数据库表同步到服务器(SQL Server Metadata Explorer -> Tables 右键 -> Synchronize with Database):
 [在新窗口浏览图片]
 [在新窗口浏览图片]
13、数据同步到服务器(Access Metadata Explorer -> 表名 -> Migrate Data):
 [在新窗口浏览图片]
 [在新窗口浏览图片]
项目保存退出后,重新打开/加载项目:
 [在新窗口浏览图片]
刷新数据库:
 [在新窗口浏览图片]
软件下载:
Microsoft SQL Server Migration Assistant for Access V9.5/10.6(SSMA for Access 迁移数据库)
Microsoft Access Database Engine 2007/2010/2016(Access 数据库引擎)
Microsoft .NET Framework V4.0/V4.5.2/V4.6.2/V4.7.2/V4.8
数据库迁移完成,接下来修改 ASP 网页文件,只需修改在 SQL 语句不能通用的函数,不是 SQL 语句的函数无需修改。
在 ASP 的 SQL 字符串里,下面这些 Access 函数在 SQL Server 都不能直接用,全局搜索检查:
now() → getdate()
instr(AR_Keyword,'abc')>=1 → charindex('abc',AR_Keyword)>=1 AR_Keyword 位置不一样,搜索可用 AR_Keyword like '%abc%' 替代。
iif() → case when ... then ... else ... end
mid(AR_Keyword,2,3) → substring(AR_Keyword,2,3)
datediff("d",a,b) → datediff(day,a,b)
dateadd
"yyyy" → year / yy
"q" → quarter / q
"m" → month / mm
"d" → day / dd
"h" → hour / hh
"n" → minute / mi
"s" → second / ss SQL 用 datediff 时,使用 second 时数值太大出错,改成 minute 就可以。
连接符号:& → + AR_Keyword='"&trim(Request.Form("AR_Keyword"))&"'+AR_Keyword
日期时间:#2026-10-08# → '2026-10-08'
DateValue(SW_UpdateDateTime)=date() → cast(SW_UpdateDateTime as date)=cast(getdate() as date)
nz() → isnull()
rs.Open 之后、rs.Update 之前,不能执行 conn.Execute 去修改/更新同一条记录。
想要更详细的,百度搜索一下。迁移过程中出现错误,把错误信息发给百度,或者豆包等AI软件。
|
| 文章作者:啊估整理 更新日期:2024-10-07 |
| 〖文章浏览:〗〖发送文章〗〖打印文章〗 |
|
|