SQL Server只有MDF文件,无日志LDF文件恢复
- 格式:pdf
- 大小:779.34 KB
- 文档页数:10
SQL Server无日志恢复数据库方法SQL Server是一个关系数据库管理系统,在进行SQL Server数据库操作的过程中难免会出现误删或者别的原因引起的日志损坏,由于SQL Server数据库中数据的重要性,出现了以上的故障之后就必须对数据库中数据进行恢复。
速达软件SQL数据库中的两个备份文件mdf和ldf文件,因误删或者别的原因引起的ldf日志文件被清除,现在只有一个mdf数据文件,怎么样才能恢复原来的帐套数据呢?鉴于SQL Server数据库中日志文件的重要性,我们必须将丢失的日志文件给找回来,下文就为大家介绍一种SQL Server无日志恢复数据库方法。
运软件行环境:
SQL SERVER 2000 SP4
速达 V5 V3.90 ERP 试用版
准备:备份原速达帐套的mdf数据文件(假设原帐套名为:
SD001), SD31502_SD001.mdf
1、停止SQL SERVER 服务管理器,把数据库的数据文件
SD31502_SD001.mdf移走。
2、打开速达软件,新建一个跟原来帐套名称SD001同名的帐套
SD001,停掉SQL服务,用原帐套数据mdf文件(SD31502_SD001.mdf)覆盖新建的帐套mdf文件,删除新建帐套的ldf文件
(SD31502_SD001_log.ldf)。
3、启动SQL数据库 --- 企业管理器,打开新建的SD001速达数据库,可以看到数据库SD31502_SD001为灰色的“置疑” 状态,现在不进行任何操作。
开始:SQL Server无日志恢复数据库
1、 将SQL数据库设置为“允许对系统目录直接进行修改”,
右键(local)(windows NT)--- 属性 --- 服务器设
置,选中“允许对系统目录直接进行修改”;
或,运行以下语句,允许对系统目录直接进行修改。
use master
go
sp_configure 'allow updates',1
go
reconfigure with override
go
执行结果:
DBCC 执行完毕。
如果 DBCC 输出了错误信息,请与系统管理员联系。
已将配置选项 'allow updates' 从 0 改为 1。
请运行RECONFIGURE 语句以安装。
2、运行以下语句,设置置疑数据库为紧急模式:
update sysdatabases set status = -32768 where name = 'SD31502_SD0001'
go
执行结果:
(所影响的行数为 1 行)
此时SQL数据库处于“只读\置疑\脱机\紧急模式”。
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。
如果遇到下列提示信息:服务器: 消息 50xx,级别 16,状态 1,行 1 未能排它地锁定数据库以执行该操作。
说明您的其他程序正在使用该数据库,如果刚才您正在使用SQL Server Enterprise Manager打开数据库的系统表,那么退出SQL Server Enterprise Manager就可以了。
执行结果::
警告: 数据库 '置疑数据库' 的日志已重建。
已失去事务的一致性。
应运行DBCC CHECKDB 以验证物理一致性。
DBCC 执行完毕。
如果DBCC 输出了错误信息,请与系统管理员联系。
此时打开在SQL Server Enterprise Manager里面会看到数据库的状态为“只供DBO使用”。
此时可以访问数据库了。
如不执行第4步,则第3、第7步则不可省略,但执行完第9步后数据库能打开,数据库还处于紧急模式,打开速达软件会提示处于“未能在数据库 'SD31502_SD0001'中运行 BEGIN TRANSACTION,因为该数据库处于回避恢复模式”。
有些数据可能会不显示,如执行DTS导出,部份表可能不能导出,即使能导出表,部份表也会提示出错。
5、验证数据库一致性(可省略) :
dbcc checkdb('SD31502_SD0001')
执行结果:
CHECKDB 发现了 0 个分配错误和 0 个一致性错误(在数据
库'SD31502_SD001' 中)。
DBCC 执行完毕。
如果 DBCC 输出了错误信息,请与系统管理员联系。
6、设置数据库为正常状态 :
sp_dboption 'SD31502_SD0001','dbo use only','false'
执行结果:
数据库的状态“只供DBO使用”,恢复为正常状态
如果没有出错,那么恭喜,现在就可以正常的使用恢复后的数据库啦。
7、运行以下语句,关闭Single User单用户模式(可省略):
sp_dboption 'SD31502_SD0001', 'single user', 'false'
8、将步骤4中设置的“允许对系统目录直接修改”进行关闭,
你可以在SQL Server Enterprise Manager里面恢复,也可以执行以下语句,在DBCC 完成关闭。
use master
go
sp_configure 'allow updates',0
go
reconfigure with override
go
执行结果:
已将配置选项 'allow updates' 从 1 改为 0。
请运行RECONFIGURE 语句以安装。
9、你修改了'NESTED TRIGGERS'的值,需要运行RECONFIGURE语句来使这个修改生效。
运行以下语句,使这个修改生效
RECONFIGURE
最后、重启电脑,打开速达软件,就可以看到原帐套数据啦。
衡量数据恢复成功与否的标准:第一:能不能进行速达帐套的修复操作,第二:能不能进行速达帐套的备份操作,附合上述两个标准说明数据恢复成功。
网上提供的数据恢复服务无非是恢复原数据库,再用DTS 导入原数据库表数据而已。
如要恢复原帐套,用DTS数据导入时注意选择“扩展属性”。
提醒各位,请用DTS导入导出数据,不然你的数据库结构或多或少,会有点问题。
但SQL数据库不熟悉的,请千万不要碰。
针对DTS导入导出, 致远会写一篇如何利用SQ数据库,进行修复“速达帐套修复失败”的修复方法,并用DTS导入导出方法进行重建已修复的速达帐套的博文,教会你如何修复MDF数据文件,并用DTS导入导出方法重建新的MDF文件。
此提醒各位速友,坚持每天备份帐套数据,以防万一。
附:在查询分析器中如执行存储过程,运行以下语句。
1,分离被置疑的数据库,
sp_detach_db @dbname = 'SD31502_SD0001'
2,附加数据库,
sp_attach_single_file_db @dbname = 'SD31502_SD0001',
@physname = 'C:\Program Files\SuperData\速达
V5\Data\SD31502_SD0001.mdf'。