master 数据库还原新问题

原创 2005年08月24日 16:36:00

master 数据库还原新问题

-- 1. 版本问题

问题描述:

在新服务器上还原老服务器的 master 数据库:
RESTORE DATABASE MASTER 
FROM DISK='C:/TMP/SQLSYS20050516.BAK' 
WITH FILE=1

出现以下错误:
服务器: 消息 3168,级别 16,状态 1,行 1
无法还原设备 C:/TMP/SQLSYS20050516.BAK 上的系统数据库备份,因为创建该数据库的服务器版本(134218488)与此服务器的版本(134217922)不同。
服务器: 消息 3013,级别 16,状态 1,行 1
RESTORE DATABASE 操作异常终止。

问题原因:
必须保证新服务器的版本和要还原的 master 数据库的版本完全一致,包括补丁的版本

-- 2. 系统数据库目录问题

问题描述:

还原过程是正常结束的,系统提示:
已成功地还原了 master 数据库。正在关闭 SQL Server。
SQL Server 正在终止此进程。

然后启动MSSQLSERVER服务,系统提示:在本地计算机无法启动MSSQLSERVER服务。服务并未返回错误。这可能是一个WINDOWS内部错误或服务内部错误。

问题分析:
不能启动有很多种可能,由于还原的提示是成功的,所以估计数据库备份没有什么问题,应该从启动过程着手去分析问题。下面逐步验证猜想和查找问题原因

--     a. 验证 master 备份文件的正确性

将 master 备份文件还原为普通数据为,结果一切正常:
RESTORE DATABASE a 
FROM DISK='C:/TMP/SQLSYS20050516.BAK' 
WITH FILE=1,
    MOVE 'master' TO 'c:/a.mdf',
    MOVE 'mastlog' TO 'c:/a.ldf',
    REPLACE
GO

USE a
GO

EXEC sp_msforeachtable 'select * from ?'
GO

DROP DATABASE a

--     b. 检查 SQL Server 服务的启动信息

在命令提示符下执行:
sqlservr -c -m

收到的启动信息中,与不能启动 SQL Server 服务相关的错误信息如下:
2005-05-26 14:51:47.11 spid5     启动数据库“model”。 
2005-05-26 14:51:47.11 spid5     udopen: 创建/打开物理设备 C:/Program Files/Microsoft SQL Server/MSSQL$ERP/data/model.mdf 时发生操作系统错误 3(系统找不到指定的路径。)。 
2005-05-26 14:51:47.16 spid5     FCB::Open failed: 未能为虚拟设备号 (VDN) 1 打开设备 C:/Program Files/Microsoft SQL Server/MSSQL$ERP/data/model.mdf。 

可以看出启动时是按老服务器的数据库安装路径来打开数据库,而新服务器的数据库安装路径与老服务器是不同的,这就是master还原后不能启动sql server的原因

--     c. 解决方法分析

model 数据库的数据文件信息保存在 master 数据库的系统表 sysdatabases 和 sysdevices 中,只需要想办法修改这两个表中的目录信息,使其符合新的服务器目录要求即可。

--     d. 解决示例

-- ===========================================================
-- 1. 还原 master 数据库的备份为普通数据库
-- ===========================================================
RESTORE DATABASE a 
FROM DISK='C:/TMP/SQLSYS20050516.BAK' 
WITH FILE=1,
    MOVE 'master' TO 'c:/a.mdf',
    MOVE 'mastlog' TO 'c:/a.ldf',
    REPLACE
GO

-- ===========================================================
-- 2. 修改 sysdatabases 和 sysdevices 表各系统数据库的目录为新服务器的目录
--    我的电脑中,sql数据库目录(d:/Program Files/Microsoft SQL Server/MSSQL/data--    如果有需要的话,其他系统数据库也做类似的修改(修改前,可以查询这两个表中的值,以决定如何修改)
-- ===========================================================
EXEC sp_configure 'allow updates',1
RECONFIGURE WITH OVERRIDE
GO

UPDATE a.dbo.sysdatabases SET 
    filename='d:/Program Files/Microsoft SQL Server/MSSQL/data/model.mdf'
WHERE NAME='model'

UPDATE a.dbo.sysdevices SET 
    phyname='d:/Program Files/Microsoft SQL Server/MSSQL/data/modellog.ldf'
WHERE NAME='modellog'
GO

EXEC sp_configure 'allow updates',0
RECONFIGURE WITH OVERRIDE
GO

-- ===========================================================
-- 3. 份修改后的数据库
-- ===========================================================
BACKUP DATABASE a 
TO DISK='C:/TMP/SQLSYS20050516.BAK' 
WITH INIT
GO

-- ===========================================================
-- 4. 在新服务器上,以单用户模式启动sql,然后执行类似下面的恢复语句以恢复master数据库
-- ===========================================================
RESTORE DATABASE MASTER 
FROM DISK='C:/TMP/SQLSYS20050516.BAK' 
WITH FILE=1

     CSDN 社区帖子地址

已备份数据库的磁盘结构版本为611,服务器支持版本为539,无法还原或升级数据库

大家都知道高级版本的数据库文件无法还原或者附加到低版本,因为高版本和低版本文件格式会有不同。如果尝试将低版本的数据库附加或者还原到低版本的数据库会看到类似下面的错误:   已备份数据库的磁盘结构版...

sql2005如何還原master數據庫

SQL Server 2005 & 2008 master与msdb数据库的备份与恢复枢木 2011-05-11============================================...

MSSQL2008 还原master数据库

MSSQL2008 还原master数据库 SQLServer的数据库还原比较简单,用企业管理器操作就行了。可是master数据库损坏了,连服务都启动不了了,那该如何还原呢。 ...

SqlServer系统数据库还原(二)系统数据库master-msdb-model 重建模拟测试

1 停止SqlServer服务,编辑文本增删字符以破坏以下3个系统数据库master、msdb、model。 (破坏前先做好备份!) 2 接下来服务也启动不了!看来只能重建系统数据库了! ...

网络存储面临的新问题

  • 2012年11月04日 12:16
  • 4.13MB
  • 下载

兼容新问题

所谓的浏览器兼容性问题,是指因为不同的浏览器对同一段代码有不同的解析,造成页面显示效果不统一的情况。在大多数情况下,我们的需求是,无论用户用什么浏览器来查看我们的网站或者登陆我们的系统,都应该是统一的...

iOS提交遇到的新问题

iOS提交说没有支持64位的一种新情况

sql server数据库备份还原后,出现“对象名无效”问题解决办法

今天真的碰到了这个盲点问题
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:master 数据库还原新问题
举报原因:
原因补充:

(最多只允许输入30个字)