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. 查看和列的值SoftwareVersionMajorSoftwareVersionMinorSoftwareVersionBuild,以确定创建备份时使用的源服务器的生成。 例如,假设这些值如下所示:

    • 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)

还原 master 数据库 (Transact-SQL)

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