| 〖打印〗〖选项〗 |
| 传统 ASP 网站,Access 2003 数据库迁移到 SQL Server 2016 数据库的教程(图) |
| 使用微软提供的数据库迁移软件 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软件。 文章作者:啊估整理 |