在SQLServer2000数据库系统中,有多个系统数据库,如master,model,msdb,tempdb等。其中master数据库是最重要的数据库,存储的是SQL Server系统的所有系统级别信息,包括磁盘空间,文件分配和使用、系统级的配置参数。同时还记录了所有的登录帐户信息、初始化信息和其他数据库信息。一旦master数据库异常,会导致整个数据库系统都无法正常功能。由于master数据库的重要性,所以一般禁止用户直接访问,如果一定要修改,确保在修改前要做完整的数据备份。
一:备份master数据库
1:master数据库的备份场景:
在下列情况下,应该备份master数据库。
创建或删除用户数据库
添加/删除登录帐户或修改的数据库级别的角色,从而影响了整个数据库服务器的安全性
更改了服务器级别的配置选项或数据库配置选项
简单的说,也就是涉及到服务器级别的更改,都应该及时备份master。
2:master数据库备份方法
默认情况下,master数据库使用简单恢复模型,对于master数据库备份只需要使用完全备份。
完全备份方法很简单,不多描述。
二:恢复master数据库基本思路
如果master数据库损坏,SQL Server就不能启动,且在事件管理器中可以查看到相应的master数据库无法访问的日志信息。
在这种情况下,就需要恢复master数据库。
恢复master数据库的思路比较清晰,主要分为如下步骤:
1:重建全新master数据库,以保证SQLServer服务器可以启动。
2:启动SQLServer服务后,通过企业管理器或命令,将SQL Server服务器置于单用户模式
3:在单用户模式下进行master数据库恢复
4:恢复完成后,将SQL Server实例重新置于多用户模式。
三:恢复master数据库具体演示
1:利用rebuildm.exe工具重建master数据库
该工具在安装SQL Server实例时已经安装到程序目录下。默认路径为:
C:\Program Files\Microsoft SQLServer\80\Tools\Binn
运行该工具,在弹出的重建master窗口中,设置好正确的参数信息:SQL Server服务器,排序规则
以及SQL Server 2000安装文件中master文件所在路径。见下图:
rebuildm.png (30.72 KB)
2008-12-211:21
注:重建过程会重建全部四个系统数据库以及两个示例数据库northwind和pubs,
接着对数据库服务器进行配置。
重建完成后,通过服务管理器或企业管理器启动SQL Server服务器。
需要注意的是:此时SQLServer数据库中只有dbo角色相关的登录帐户,且sa帐户密码已经重置为空。
同时所有的用户数据库都不可见。
2:将SQL Server服务器置于单用户模式
将SQL Server服务器设置为单用户模式方法很简单:打开企业管理器,选择服务器右键单击,选择“属性”
在“属性配置”窗口“常规”选项框单击“启动参数”,在“启动参数”中添加“-m”参数。如下图:
3:在单用户模式下进行master数据库恢复
设置好单用户模式后,重新启动SQL Server实例,进入真正的master数据库还原。
还原方式可以通过企业管理器进行还原
2008-12-211:21
也可以通过查询分析器运行T-SQL命令执行还原:
注:使用企业管理器进行还原时,还原成功后可能会出现一些连接错误提示。
建议使用查询分析器来执行还原,可以避免出现错误提示。
4:恢复完成后,将SQL Server实例重置于多用户模式
恢复完成后,重新启动SQL Server实例,去除第2步设置的单用户模式参数 -m。
重新启动SQL Server实例,打开企业管理器,可以看到所有的用户数据库已经可见,
且安全性相关登录帐户也已经恢复!
注:
在恢复master数据库时model和msdb数据库也会被更建,
所以master数据恢复完成后,应该立即还原model和msdb数据库。
四:其它系统数据库的恢复
对于其它系统数据库,如model数据库和msdb数据库都是很重要的系统数据库。
model数据库作为所有新建的用户数据库和tempdb数据库的样板,任何新建数据库默认结构都与model数据库一样。
Msdb数据库是SQLSERVER2000代理服务以及自动化作业使用的数据库。
这两个数据库异常也会影响SQLServer服务器正常工作。
特别是model数据库,是作为所有新建数据库的模板,如果model数据库损坏也会导致SQL Server服务不能启动,
在这种情况下,也需要先重建master数据库,然后再依次恢复master,model和msdb数据库,
恢复操作与恢复master数据库操作相类似。
稍有不同的是,msdb数据库损坏不会导致SQLServer服务无法启动,此时只需通过企业管理器进行恢复工作即可!
1.准备好sql server 2005安装光盘第一张;
2.用虚拟光驱加载;
3.停止sql server服务;
4.备份C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data目录;
5.重建master数据库:
在命令行下,运行cd c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn路径,进入数据库安装目录。
运行start /wait E:\setup.exe /qn INSTANCENAME=mssqlserver REINSTALL=SQL_Engine REBUILDDATABASE=1 SAPWD=ttt123T
重建完成,C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data目录下的文件更改时间会更新;
6.停止sql server服务;
7.在命令提示字元下以单用户模式启动sql server:
sc start mssqlserver -m -f -c
8.在ssms中,新建查询登入sql server,以新的sa密码;
9.在查询中执行如下语句还原master:
--查看master文件所在的路径:
SELECT name, physical_name AS CurrentLocation, state_desc
FROM sys.master_files WHERE database_id = DB_ID(N'master');
RESTORE DATABASE master FROM DISK=N'F:\master_backup_201511162200.bak'
WITH MOVE 'master' TO N'D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\master.mdf',
MOVE 'mastlog' TO N'D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\mastlog.ldf',REPLACE,STATS
10.从第4步中的备份文件中复制msdb数据库文件,覆盖新的msdb;
11.启动sql server服务与代理服务;
完成。
------------------------------------------------------------------------------------
SQL Server 2005 & 2008 master与msdb数据库的备份与恢复
====================================================================
master与msdb数据库的备份与普通数据库一样,本文主要描述master与msdb数据库的恢复的一些个人积累。
恢复master与msdb数据库关键在于以单用户模式启动,其它并没有太大的区别。
====================================================================
恢复master数据库:
方法一:
--------------------------------------------------------------------
恢复步骤:
1 停止MSSQLSERVER服务
2 “开始”-“运行”,输入:cmd
3 a 输入:net start "SQL Server (MSSQLSERVER)" /m
正常情况下显示如下信息:
-------------------------------------
SQL Server (MSSQLSERVER) 服务正在启动 ..
SQL Server (MSSQLSERVER) 服务已经启动成功。
-------------------------------------
b 输入:sqlcmd
1>USE master;
2>GO
此时显示:
-------------------------------------
已将数据库上下文更改为 'master'。
-------------------------------------
1>RESTORE DATABASE master FROM DISK='C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Backup\master.bak';
2>GO
如果恢复成功,显示如下信息:
-------------------------------------
已为数据库 'master',文件 'master' (位于文件 1 上)处理了 376 页。
已为数据库 'master',文件 'mastlog' (位于文件 1 上)处理了 3 页。
已成功地还原了 master 数据库。正在关闭 SQL Server。
SQL Server 正在终止此进程。
-------------------------------------
失败则显示:
-------------------------------------
消息 3154,级别 16,状态 4,服务器 HC,第 1 行
备份集中的数据库备份与现有的 'master' 数据库不同。
消息 3013,级别 16,状态 1,服务器 HC,第 1 行
RESTORE DATABASE 正在异常终止。
-------------------------------------
此时需要在恢复语句后面加上:WITH REPLACE。如:
1>RESTORE DATABASE master FROM DISK='C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Backup\master.bak' WITH REPLACE;
2>GO
c 重启MSSQLSERVER服务
方法二:
--------------------------------------------------------------------
与方法一差不多。
1.打开“SQL Server 配置管理器”,单击“SQL Server 服务”
2.在右窗格中,右键单击“SQL Server (<实例名>)”,再单击“属性”
3.在“高级”选项卡的“启动参数”框中,键入以分号“;”分隔的参数。(例如,若要以单用户模式启动,在现有启动选项之前插入“-m;”,单击“确定”,此时,弹出警告框,单击“确定”即可)
4.重新启动数据库引擎
5.(接下来同方法一中步骤3差不多)
a 开始”-“运行”,输入:cmd
b 同方法一中步骤3 b
c 成功恢复master数据库后,若要以正常的多用户模式重新启动服务器实例,必须先从“启动参数”框中删除刚才输入的“-m;”,然后重新启动SQL Server服务
====================================================================
恢复msdb数据库:
--------------------------------------------------------------------
在 msdb数据库里存储较多的是SQL Agent里的内容,如作业、调度、操作员、警告等信息,同时还存放SQL Server Integration Service(SSIS)相关信息。其恢复过程与普通数据库恢复过程大同小异,不同点就是需要在单用户模式启动下进行恢复。
1 打开SQL Server Management Studio,连接到相关的数据库服务器
2 右键单击msdb数据库,单击“属性”打开数据库属性窗口,单击“选项”,在右边的“状态”/“限制访问”指定“SINGLE_USER”,然后单击“确定”即以单用户模式启动,此时msdb显示为“msdb(单个用户)”
3 (同恢复普通数据库一样...)
4 恢复完毕后,别忘了将“限制访问”改加以前的状态“MULTI_USER”