我在一台机器上备份了主数据库SQL Server 2008 版本 10.00.1600。然后我在新机器上以单用户模式打开 SQL Server,使用SQL Server 2008 R2 版本 10.50.1600使用以下命令(使用 sqlcmd)
RESTORE DATABASE master FROM DISK = 'D:\master.bak' WITH REPLACE;
运行此命令会导致以下错误.....
消息 3168,级别 16,状态 1,服务器 U15417546,第 1 行 无法恢复设备 D:\master.bak 上的系统数据库备份,因为它是由与此服务器 (10.50.1600) 不同的服务器版本 (10.00.1600) 创建的。消息 3013,级别 16,状态 1,服务器 U15417546,第 1 行 RESTORE DATABASE 异常终止。
在两台服务器上运行以下命令可以验证我在开始时发布的版本号是否正确。
SELECT SERVERPROPERTY('Edition') AS Edition,
SERVERPROPERTY('ProductVersion') AS ProductVersion,
SERVERPROPERTY('ProductLevel') AS ProductLevel
由于我是从较低版本恢复到较高版本,我认为恢复应该能够完成?我找不到太多关于此的帮助,因此任何信息都将不胜感激。
答案1
对于非系统数据库,情况确实如此。我从未尝试过对系统数据库执行此操作,SQL Server 可能会阻止这种情况发生。B 计划是将源服务器升级到 R2,然后将主服务器恢复到目标服务器,但您可能已经考虑过这种方法。
答案2
虽然用户数据库可以升级到较新的版本,但系统数据库却不能。主数据库尤其如此,因为它包含数据库服务器的大部分配置信息。
答案3
您应该编写脚本,以便从 master 获取所需的内容(例如登录信息)。如果需要,可以使用第三方工具(例如 redgate)来简化操作。正如其他发帖者所说,使用系统数据库执行此操作是行不通的。