background image

 

数据库紧急恢复过程
当数据库失效时,请记录下当前时间,然后遵循下面步骤进行恢复。
 
1.         备份数据库。

成功,使用备份文件还原数据库,转第 2 步。

失败,转第 3 步。
 
2.         还原数据库(在另一个服务器操作)
(1)DECLARE @backup_device nvarchar(128), @log_backup_device nvarchar(128)

set @backup_device = N'F:\database\myDb.bak'
 
restore database MyDb 
    from disk = @backup_device 
WITH REPLACE , file=5
(2)根据事务日志来恢复到具体某个时间点
--首先基于一个完全备份点开始做事务日志还原,注意[NORECOVERY]参数
    RESTORE database (数据库名) from 完全备份设备名 with REPLACE,NORECOVERY,
    MOVE 'MyDb' TO 'D:\FMyDb_0606.mdf',
    MOVE 'FMyDb_Log' TO 'D:\FMyDb_Log_0606.ldf'
 

    --开始事务日志
    A.查看事务日志点:RESTORE HEADERONLY from disk='事务日志的备份的文件完全路径或备份设

备名'
 
    B.开始恢复
    restore LOG 数据库名 from 事务日志备份设备名 with FILE=1, NORECOVERY
    restore LOG 数据库名 from 事务日志备份设备名 with FILE=2, NORECOVERY
    restore LOG 数据库名 from 事务日志备份设备名 with FILE=3,NORECOVERY   --倒数第二个

备份日志
    restore LOG 数据库名 from 事务日志备份设备名 with FILE=4,RECOVERY --最后一个备份日志
 
 

执行失败的话,转下一步。
 
3.         复制数据库 mdb, ldf 文件。

 

执行 net stop mssqlserver 停止 SQL Server 服务,复制数据库 mdb, ldf 文件。

成功复制 2 个文件已经其他文件组,转第 4 步。

只能复制 mdb 文件,转第 5 步。

只能复制 ldf 文件,转第 8 步。
 
4.         附加数据库(数据库文件与日志文件)

CREATE DATABASE [MyDb2] ON 
( FILENAME = N'F:\back\MyDb.mdf' )

,( FILENAME = N'F:\back\MyDb_log.ldf' )
 FOR ATTACH

如果出现失败,转第 5 步。
 
5.         附加数据库(只有数据库文件)

CREATE DATABASE [MyDb2] ON 
( FILENAME = N'F:\back\MyDb.mdf' )

FOR ATTACH_REBUILD_LOG

如果失败,在 SQL2000 下,可以尝试(2005 版本没有该功能)
dbcc   rebuild_log('MyDb','F:\MyDb_log.ldf')   

转第 6 步。

当服务器因为硬件失败导致数据库失效时,可能出现以下错误,转第 6 步:

文件激活失败。物理文件名称'f:\database\MyDb\MyDb_log.ldf'可能不正确。

由于数据库没有完全关闭,无法重新生成日志。
 
6.         强制附加数据库
a)         新建一个同名数据库

CREATE DATABASE [MyDb_temp]