sql server2000中,如果数据库文件(非系统数据库文件)遇到错误的时候,我们该怎么办。以下是笔者以前的笔记。仅适用于非master,msdb的数据库。
说明如下:
1 建一个测试数据库test(数据库类型为完全)
2 建一个表,插入点记录
create table a(c1 varchar(2))
go
insert into a values('aa')
go
insert into a values('bb')
go
3 作完全备份,到文件test_1.bak
4 在作一点修改
insert into a values('cc')
go
create table b(c1 int)
go
insert into b values(1)
go
insert into b values(2)
go
5 shutdown 数据库服务器
6 用ultraedit编辑数据库文件test_data.mdf,随便修改点字节内容,相当于数据库遭到致命的损坏。
7 启动数据库,并且运行企业管理器,点开数据库,看到test变成灰色,而且显示置疑。
8 运行isql -slocalhost -usa -p
1> backup log test to disk='d:program filesmicrosoft sql servermssqlbackup
est_2.bak' with no_truncate
2>go
已处理 2 页,这些页属于数据库 'test' 的文件 'test_log'(位于文件 1 上)。
backup log 操作成功地处理了 2 页,花费了 0.111 秒(0.087 mb/秒)。
9 进行恢复最老的完全备份
1> restore database test from disk='d:program filesmicrosoft sql servermssql
backup est_1.bak' with norecovery
2> go
已处理 96 页,这些页属于数据库 'test' 的文件 'test_data'(位于文件 1 上)。
已处理 1 页,这些页属于数据库 'test' 的文件 'test_log'(位于文件 1 上)。
restore database 操作成功地处理了 97 页,花费了 0.107 秒(7.368 mb/秒)。
10 恢复最近的日志
1> restore log test from disk='d:program filesmicrosoft sql servermssqlbacku
p est_2.bak' with recovery
2> go
已处理 2 页,这些页属于数据库 'test' 的文件 'test_log'(位于文件 1 上)。
restore log 操作成功地处理了 2 页,花费了 0.056 秒(0.173 mb/秒)。
数据已经完全恢复了,可以使用了。
select * from a
go
总结,dba应该有一个完善的数据库备份计划。本例中,如果没有一个完全备份的话,数据库的恢复就不可能
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器