SQL只有MDF文件的恢复--SQL无日志LDF文件的恢复
SQL Server是一个关系数据库管理系统,在进行SQL Server数据库操作的过程中难免会出现误删或者别的原因引起的日志损坏,由于SQL Server数据库中数据的重要性,出现了以上的故障之后就必须对数据库中数据进行恢复。
运软件行环境:
准备:备份原速达帐套的mdf数据文件(假设原帐套名为:SD001),SD31502_SD0001.mdf
1、停止SQL SERVER 服务管理器,把数据库的数据文件SD31502_SD0001.mdf移走。
2、打开速达软件,新建一个跟原来帐套名称SD001同名的帐套SD0001,停掉SQL服务,用原帐套数据mdf文件(SD31502_SD0001.mdf)覆盖新建的帐套mdf文件,删除新建帐套的ldf文件(SD31502_SD0001_log.ldf)。
3、启动SQL数据库 --- 企业管理器,打开新建的SD0001速达数据库,可以看到数据库SD31502_SD0001为灰色的“置疑” 状态,现在不进行任何操作。
开始:SQL Server无日志恢复数据库
1、将SQL数据库设置为“允许对系统目录直接进行修改”,右键(local)(windows NT)--- 属性 --- 服务器设置,选中“允许对系统目录直接进行修改”;图2
或,运行以下语句,允许对系统目录直接进行修改。
use master
go
sp_configure 'allow updates',1
go
reconfigure with override
go
2、运行以下语句,设置置疑数据库为紧急模式:
update sysdatabases set status = -32768 where name = 'SD31502_SD0001'
go
3、运行以下语句,把应用数据库设置为Single User单项用户模式(可省略);
sp_dboption 'SD31502_SD0001', 'single user', 'true'
4、运行以下语句,重新建立LOG (置疑数据库_log.ldf) 文件
dbcc rebuild_log('SD31502_SD0001','C: \Program Files\SuperData\速达V5\Data\SD31502_SD0001_log.ldf')
或
dbcc rebuild_log('SD31502_SD0001','C:\Program Files\Microsoft SQL Server\MSSQL\Data\SD31502_SD0001_log.ldf')
建议LDF保存速达数据Data文件夹,'C: \Program Files\SuperData\速达V5\Data。图7
如果遇到下列提示信息:服务器: 消息 50xx,级别 16,状态 1,行 1 未能排它地锁定数据库以执行该操作。
如不执行第4步,则第3、第7步则不可省略,但执行完第9步后数据库能打开,数据库还处于紧急模式,打开速达软件会提示处于“未能在数据库 'SD31502_SD0001'中运行 BEGIN TRANSACTION,因为该数据库处于回避恢复模式”。有些数据可能会不显示,如执行DTS导出,部份表可能不能导出,即使能导出表,部份表也会提示出错。图9
5、验证数据库一致性(可省略) :
dbcc checkdb('SD31502_SD0001')
6、设置数据库为正常状态 :
sp_dboption 'SD31502_SD0001','dbo use only','false'
7、运行以下语句,关闭Single User单用户模式(可省略):
sp_dboption 'SD31502_SD0001', 'single user', 'false'
图12
8、将步骤4中设置的“允许对系统目录直接修改”进行关闭,你可以在SQL Server Enterprise Manager(SQL企业管理器)里面恢复,也可以执行以下语句,在DBCC 完成关闭。
use master
go
sp_configure 'allow updates',0
go
reconfigure with override
go
图13
RECONFIGURE
图14
最后、重启电脑,打开速达软件,就可以看到原帐套数据啦。衡量数据恢复成功与否的标准:第一:能不能进行速达帐套的修复操作,第二:能不能进行速达帐套的备份操作,同时附合上述两个标准,说明数据恢复成功。网上提供的数据恢复服务无非是恢复原数据库,再用DTS导入原数据库表数据而已。
提醒各位,请用DTS导入导出数据,不然你的数据库结构或多或少,会有点问题。如要恢复原帐套,用DTS数据导入时注意选择“扩展属性”。但SQL数据库不熟悉的,请千万不要碰。
如果进行修复过程中出现“速达帐套修复失败”问题,或者进行备份过程中出现“速达帐套不能备份”问题。针对这两个问题 ,
再次提醒各位速友,坚持每天备份帐套数据,以防万一。
附:在查询分析器中如执行存储过程,运行以下语句。
1,分离被置疑的数据库,
sp_detach_db @dbname = 'SD31502_SD0001'
图15
2,附加数据库,
sp_attach_single_file_db @dbname = 'SD31502_SD0001', @physname = 'C:\Program Files\SuperData\速达V5\Data\SD31502_SD0001.mdf'
图16