14:45接到报告,网站无法访问,进入远程查看,发现文件没有什么更改,确定应该和******无关。

检查发现所有asp页面均无法正常工作,怀疑iis设置被更改,无果。

检查数据库,发现数据库异常,显示“置疑”

,数据库不存在。疑遭到***报复性***。

检查数据库备份,还有昨天定期的备份在;检查数据库存放文件夹,看到数据库物理文件mdf还在,ldf不见了。

尝试恢复……

 

 

 

方法一(日志文件完好)


1.新建同名数据库。
2.把该数据库设置为脱机。
3.删除其日志文件(.LDF),不删除后边的过程执行通不过。
4.在在查询分析器中以超级用户登入,执行以下存储过程,必须以超级用户登入,这是系统级存存处过程。

EXEC sp_detach_db @dbname = 'xxx'    //@dbnam为要还原的数据库
EXEC sp_attach_single_file_db @dbname = 'xxx', @physname = 'yyyy'   //@physname为.mdf文件路径
5.把该数据库设置为联机。
6.刷新数据库,表出来了,数据完好

方法二(无日志文件或日志文件损坏)
 

1.新建一个同名的数据库 test

2.再停掉sql server(注意不要分离数据库)

3.用原数据库的数据文件覆盖掉这个新建的数据库

4.再重启sql server

5.此时打开企业管理器时会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名)

USE MASTER
GO

SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE
GO

UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='test'
Go

sp_dboption 'test', 'single user', 'true'
Go

DBCC CHECKDB('test')
Go

update sysdatabases set status =28 where name='test'
Go

sp_configure 'allow updates', 0 reconfigure with override
Go

sp_dboption 'test', 'single user', 'false'
Go

6.完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用数据库的脚本创建一个新的数据库,并将数据导进去就行了.

注:按照网上的这个方法,做了前5步,数据库是恢复了,但是不能用,有很多问题,没有做第六步,最终选择在昨天的备份基础上,将还原的这个问题数据库重要的新数据追加上去。

寻找原因:发现windows日志中在13:47有数据库的连续报错:

错误: 823,严重度: 24,状态: 2
I/O error (torn page) detected during read at offset 0x000002677de000 in file 'E:\database\MSSQL\Data\*****_Data.MDF'.

错误: 3313,严重度: 21,状态: 2
恢复数据库 '*****' 的日志中记录的操作时出错。出错位置在日志记录 ID (2436249:350:1)。

错误: 3313,严重度: 21,状态: 2
Error while redoing logged operation in database '*****'. Error at log record ID (2436249:350:1).

错误: 3414,严重度: 21,状态: 1
数据库 '*****'(数据库 ID 7)未能恢复。请与技术支持联系。

由于之前的数据库损坏了,在还原操作过程中未注意保护日志文件,导致不能查看细节的原因。

下次再遇到类似的问题,应该能处理的更好些