备份恢复 & 迁移4 分钟阅读
SQL Server 跨版本迁移的一种姿势
今天业务要求还原一套 MSSQL 数据库到新建的 MSSQL 数据库上,直接用备份恢复的方式恢复报错: 报错很明确,MSSQL 2022(16.00.1000) 的数据库备份无法恢复到 MSSQL 2019(15.00.
2026年1月8日
database
DBA 实战课程
系统学习 Oracle DBA
- 2738+ 篇实战文章
- 1500+ 步骤截图
- 10 大核心模块
开通会员 ¥128/月起
查看完整课程在知识库中专注阅读,并随时返回相关工具与课程
本章目标:掌握本章核心知识点 前置要求:完成前序章节学习 预计时长:60 分钟
今天业务要求还原一套 MSSQL 数据库到新建的 MSSQL 数据库上,直接用备份恢复的方式恢复报错:

报错很明确,MSSQL 2022(16.00.1000) 的数据库备份无法恢复到 MSSQL 2019(15.00.2000) 上,网上搜了一下,发现了一个解决方案。
本文分享一下如何从高版本 MSSQL 恢复到低版本数据库的完整的操作过程。
首先,源端选中需要导出的数据库,选择 [Tasks] --> [Generate Scripts]:

介绍页可跳过:

导出数据库的所有对象:

选择生成脚本存放的位置:

选择需要导入的 MSSQL 版本:

继续下一步:

执行导出:

导出成功之后在目录里可以看到:

将导出的脚本文件拷贝到目标端进行恢复即可。
根据低版本 MSSQL 的实际环境修改脚本中的文件路径:

执行脚本:


数据库创建完成。
需要注意源端和目标端的数据库字符集(排序规则),如果有差异,建议指定字符集 COLLATE <排序规则> 创建数据库:
1CREATE DATABASE [TEST_DB]2 CONTAINMENT = NONE3 ON PRIMARY 4( NAME = N'TEST_DB', FILENAME = N'D:\MSSQL\DATA\TEST_DB.mdf' , SIZE = 75571200KB , MAXSIZE = UNLIMITED, FILEGROWTH = 65536KB )5 LOG ON 6( NAME = N'TEST_DB_log', FILENAME = N'D:\MSSQL\DATA\TEST_DB_log.ldf' , SIZE = 176168960KB , MAXSIZE = 2048GB , FILEGROWTH = 65536KB )7 COLLATE Chinese_PRC_CI_AS8 WITH CATALOG_COLLATION = DATABASE_DEFAULT9GO确保两边的字符集一致,否则可能导致中文乱码问题。
MSSQL 操作总体来说还是很简单的,即使没有经验,跟着流程一步步走就成功了。