实验目的:备份与恢复 MASTER 和 MSDB 数据库
实验讲解:MASTER 和 MSDB 是 SQL Server 2000 中两个最重要的系统数据库。MASTER 损坏极有可能导致 MSSQLSERVER 服务启动不了,MSDB 损坏会导致自动化管理作业和系统历史记录等重要资料丢失。
MASTER 和 MSDB 的备份操作比较简单,和用户数据库的备份操作一样,可以直接在企业管理器中进行,也可以在查询分析器中进行;需要注意的是 MASTER 数据库只能进行完全备份。但是 MASTER 数据库的恢复必须在单用户模式下进行,在此模式下只能有一个管理员账户连接到服务器;MSDB 的恢复和用户数据库的恢复操作一样。
实验思路:如果 MASTER 数据库损坏导致 MSSQLSERVER 服务无法启动,可以使用系统安装时自带的一个工具 rebuldm.exe重建 MASTER 数据库,使得 MSSQLSERVER 服务能够启动,然后再恢复系统数据库。rebuldm.exe 在 SQLDIR\80\Tools\Binn\ 目录下。本实验通过故意破坏 MASTER 数据库然后在恢复的过程来加强对此过程的理解。
实验环境:Windows 2000 Server + SQL Server 2000 ,SQL Server 2000 安装光盘
实验步骤:
1、 备份 MASTER 和 MSDB 数据库
可以在企业管理器中或查询分析器中备份这两个数据库,假如我们在查询分析中运行
backup database 语句将它们分别备份到 E:\master.bak 和 E:\msdb.bak 中。
2、 故意破坏系统数据库
如果要刻意破坏系统数据库,可以停止 MSSQLSERVER 服务,然后将系统数据库的文件删除。
3、 重建 MASTER 数据库
将安装光盘上的 \X86\DATA 文件夹复制到硬盘上,并且去掉“只读”属性(这一点非常重要)
运行 rebuldm.exe ,选择硬盘上的 DATA 文件夹并点击“重建”按钮(如果是多实例的服务器还需要选择需要重建的实例名称)
如此之后,MASTER 、MSDB 、MODEL 、TEMPDB 、NORTHWIND 、PUBS 数据库将重建
如果系统已经安装了补丁,重建的时间可能会长一些
4、 以单用户模式启动 MSSQLSERVER 服务
如果要以单用户的模式运行默认实例,可以运行 sqlservr.exe –c –m 命令
如果要以单用户的模式运行命名实例,则需要先切换到该命令实例的文件夹中的 \Binn\ 目录下,然后运行 sqlservr.exe –c –m –s InstanceName 命令
5、 在查询分析器中恢复 MASTER 数据库
运行查询分析器并以管理员身份登录
运行 restore database master from disk = ‘E:\master.bak’ 恢复 MASTER 数据库
6、 重新启动 MSSQLSERVER 服务
7、 在企业管理器中恢复 MSDB 数据库
其他说明:如果用户修改过 MODEL 数据库,则还需要对其进行恢复操作。