数据库紧急恢复过程
当数据库失效时,请记录下当前时间,然后遵循下面步骤进行恢复。
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]