前言

今天业务要求还原一套 MSSQL 数据库到新建的 MSSQL 数据库上,直接用备份恢复的方式恢复报错:

报错很明确,MSSQL 2022(16.00.1000) 的数据库备份无法恢复到 MSSQL 2019(15.00.2000) 上,网上搜了一下,发现了一个解决方案。

本文分享一下如何从高版本 MSSQL 恢复到低版本数据库的完整的操作过程。

高版本导出脚本

首先,源端选中需要导出的数据库,选择 [Tasks] --> [Generate Scripts]

介绍页可跳过:

导出数据库的所有对象:

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

选择需要导入的 MSSQL 版本:

继续下一步:

执行导出:

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

将导出的脚本文件拷贝到目标端进行恢复即可。

低版本恢复数据

根据低版本 MSSQL 的实际环境修改脚本中的文件路径:

执行脚本:

数据库创建完成。

补充一下

需要注意源端和目标端的数据库字符集(排序规则),如果有差异,建议指定字符集 COLLATE <排序规则> 创建数据库:

1
2
3
4
5
6
7
8
9
CREATE DATABASE [TEST_DB]
CONTAINMENT = NONE
ON PRIMARY
( NAME = N'TEST_DB', FILENAME = N'D:\MSSQL\DATA\TEST_DB.mdf' , SIZE = 75571200KB , MAXSIZE = UNLIMITED, FILEGROWTH = 65536KB )
LOG ON
( NAME = N'TEST_DB_log', FILENAME = N'D:\MSSQL\DATA\TEST_DB_log.ldf' , SIZE = 176168960KB , MAXSIZE = 2048GB , FILEGROWTH = 65536KB )
COLLATE Chinese_PRC_CI_AS
WITH CATALOG_COLLATION = DATABASE_DEFAULT
GO

确保两边的字符集一致,否则可能导致中文乱码问题。

总结

MSSQL 操作总体来说还是很简单的,即使没有经验,跟着流程一步步走就成功了。