master 数据库还原新问题

master 数据库还原新问题

--1.版本问题

问题描述:

在新服务器上还原老服务器的master数据库:
RESTOREDATABASEMASTER
FROMDISK='C:/TMP/SQLSYS20050516.BAK'
WITHFILE=1

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

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

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

问题描述:

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

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

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

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

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

USEa
GO

EXECsp_msforeachtable'select*from?'
GO

DROPDATABASEa

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

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

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

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

--c.解决方法分析

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

--d.解决示例

--===========================================================
--1.还原master数据库的备份为普通数据库
--===========================================================
RESTOREDATABASEa
FROMDISK='C:/TMP/SQLSYS20050516.BAK'
WITHFILE=1,
MOVE'master'TO'c:/a.mdf',
MOVE'mastlog'TO'c:/a.ldf',
REPLACE
GO

--===========================================================
--2.修改sysdatabases和sysdevices表各系统数据库的目录为新服务器的目录
--我的电脑中,sql数据库目录(d:/ProgramFiles/MicrosoftSQLServer/MSSQL/data--如果有需要的话,其他系统数据库也做类似的修改(修改前,可以查询这两个表中的值,以决定如何修改)
--===========================================================
EXECsp_configure'allowupdates',1
RECONFIGUREWITHOVERRIDE
GO

UPDATEa.dbo.sysdatabasesSET
filename='d:/ProgramFiles/MicrosoftSQLServer/MSSQL/data/model.mdf'
WHERENAME='model'

UPDATEa.dbo.sysdevicesSET
phyname='d:/ProgramFiles/MicrosoftSQLServer/MSSQL/data/modellog.ldf'
WHERENAME='modellog'
GO

EXECsp_configure'allowupdates',0
RECONFIGUREWITHOVERRIDE
GO

--===========================================================
--3.份修改后的数据库
--===========================================================
BACKUPDATABASEa
TODISK='C:/TMP/SQLSYS20050516.BAK'
WITHINIT
GO

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

CSDN社区帖子地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值