一、 概述
在应用系统中,数据库往往是最核心的部分,一旦数据库毁坏或损坏,将会带来巨大的损失,所以数据库的管理越来越重要。 我们在做数据库管理与维护工作中,不可避免会出现各种各样的错误,本文针对数据库的日志文件丢失时如何利用mdf文件恢复数据库的方法进行了研究。
二、 数据库的恢复
当数据库的主数据mdf文件完好无损时,在丢失了ldf文件的情况下,如何利用mdf文件恢复数据库?我们把sql server的日志文件分为两类:一类是无活动事务的日志,另一类是含活动事务的日志,根据不同的日志,采取不同的方法来恢复数据库。
1. 无活动事务的日志恢复
无活动事务的日志丢失时,我们很容易利用mdf文件直接恢复数据库,具体方法如下:
①.分离被质疑的数据库,可用企业管理器中的"分离数据库工具",或者用存储过程sp_detach_db分离数据库;
②利用mdf文件附加数据库生成新的日志文件,可用企业管理器中的"附加数据库"的工具,或者用存储过程sp_attach_single_file_db附加数据库。
如果数据库的日志文件中含有活动事务,利用此方法就不能恢复数据库。
2. 含活动事务的日志恢复
含有活动事务的日志丢失时,利用上述方法就会出现"数据库和日志文件不符合,不能附加数据库"。对于这种情况下,我们采用如下方法:
①新建同名数据库aaa,并设它为紧急模式
·停止sql server服务器;
·把数据库主数据mdf文件移走;
·启sql server服务器,新建一个同名的数据库aaa;
·停止sql server服务器,把移走的mdf文件再覆盖回来;
·启动sql server服务器,把aaa设为紧急模式,不过默认情况下,系统表是不能随便修改的,必须首先设置一下使其能被修改,运行以下语句即可:
| use master go sp_configure ’allow updates’,1 reconfigure with override go |
| update sysdatabases set status=32768 where hame=’aaa’ |
| sp_dboption ’aaa’, ’single user’, ’true’ |
| dbcc checkdb(’aaa’) |
| update sysdatabases set status=28 where name=’aaa’ sp_configure ’allow updates’,0 reconfigure with override go |
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 注册表 操作系统 服务器 应用服务器