MSSQLSERVER_3168

适用于:SQL Server

详细信息

Attribute
产品名称 SQL Server
事件 ID 3168
事件源 MSSQLSERVER
组件 SQLEngine
符号名称 LDDB_SYSTEMWRONGVER
消息正文 无法还原设备 %ls 上的系统数据库备份,因为创建该数据库的服务器版本 (%ls) 与此服务器 (%ls) 的版本不同。

说明

无法在服务器内部版本上还原系统数据库的备份, (mastermodelmsdb) 不同于最初创建备份的版本。

注意

安装服务更新(如累积更新、Service Pack 或 GDR)会更改服务器内部版本号。 服务器生成始终是增量的。

可能的原因

系统数据库的数据库架构可能会跨服务器内部版本更改。 为了确保架构更改不会导致不一致,RESTORE 语句会将备份文件的服务器内部版本号与尝试还原备份的服务器内部版本号进行比较。 如果生成不同,语句会发出 “3168” 错误消息,还原操作将异常终止。

可能会出现此问题的一些情况包括:

  • 您尝试从服务器 B 上创建的备份还原服务器 A 上的系统数据库。服务器 A 和 B 位于不同的服务器内部版本上。 例如,服务器 A 可能是原始发布版本的内部版本,而服务器 B 可能是 Service Pack 1 (SP1) 内部版本。

  • 尝试从在同一服务器上执行的备份还原系统数据库。 但是,当备份进程运行时,服务器运行的是不同的内部版本。 也就是说,服务器在创建备份后已升级。

用户操作

若要解决该问题,请执行以下步骤:

注意

对于以下过程,服务器 A 是基于源SQL Server服务器进行备份,而服务器 B 是你尝试将备份还原到的基于SQL Server服务器的目标服务器:

  1. 使用以下查询确定服务器 B (版本 B) 的版本:

    SELECT @@VERSION

  2. 运行类似于以下内容的查询,以确定在创建源备份时运行的SQL Server的版本 (版本 A) :

    RESTORE headeronly FROM disk = 'c:\sqlbackups\masterdb.bak'

  3. 查看 、 SoftwareVersionMinorSoftwareVersionBuild 列的值SoftwareVersionMajor,以确定进行备份时使用的源服务器的内部版本。 例如,假设值如下所示:

    • SoftwareVersionMajor:15
    • SoftwareVersionMinor:0
    • SoftwareVersionBuild:4236 在本例中,进行备份时的源SQL Server版本为 15.0.4236。
  4. 使用SQL Server完整的版本列表表Excel 生成电子表格来确定生成所对应的SQL Server的版本。 例如,15.0.4236 映射到 SQL Server 2019 CU16+GDR (版本 A) 。

  5. 使用以下选项之一:

    • 如果版本 A 大于版本 B,请使用SQL Server的最新更新和版本历史记录中的信息将服务器 B 升级到与版本 A 相同的内部版本。

    • 如果版本 A 小于版本 B,请使用以下步骤暂时删除后续更新:

      1. “控制面板”中,选择“程序>程序和功能”,然后选择“查看已安装的更新”。

      2. 找到对应于版本 B 的每个后续更新包对应的条目。

      3. 长按 (或右键单击) 条目,然后选择“ 卸载”。

    • 验证版本 B 是否与版本 A 相同后,请在服务器 B 上重试 master 数据库的还原操作。

  6. (建议) 更新服务器 B 到最新的可用版本,然后对系统数据库进行新的备份。

请参阅

还原系统数据库 (SQL Server) 的限制

(Transact-SQL) 还原 master 数据库

重新生成 master 数据库的最简单方法