master数据库还原新问题
时 间:2006-07-04 00:00:00
作 者:UMVsoft整理 ID:8 城市:上海 QQ:2851379730
摘 要:master数据库还原新问题
正 文:
问题描述:
在新服务器上还原老服务器的 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
Access软件网QQ交流群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- Access对子窗体数据进行批...(10.30)
- 最精简的组合框行来源数据快速输...(10.25)
- Access仿平台的多值选择器...(10.24)
- 【Access日期区间段查询】...(10.22)
- 【Access源码示例】VBA...(10.12)
- Access累乘示例,Acce...(10.09)
- 数值8.88,把整数8去掉,转...(10.08)
- 【Access自定义函数】一个...(09.30)
- 【Access选项卡示例】Ac...(09.09)
学习心得
最新文章
- Access系统自带的日期选择器不...(11.08)
- 分享一下Access工程中的acw...(11.07)
- Access快速开发平台--让有权...(11.04)
- Access快速开发平台--审批选...(11.01)
- ACCESS两张表先各自排序,然后...(10.31)
- Access对子窗体数据进行批量+...(10.30)
- SqlServer中如何用SQL命...(10.29)
- Access报表中的分组功能用代码...(10.28)
- 用Access计算库存结余的一个方...(10.26)
- 最精简的组合框行来源数据快速输入(...(10.25)