由于突然断电,服务器关闭了。来电后开机后,公司OA不能使用了。登录sqlserver2005客户端,发现数据库后面多了(可疑)。
从网上找了4种办法,都不行,我试过的如下:----------------------------------
重启服务
--------------------------------------------------
日志文件丢了,建一个日志文件
--------------------------------------------------
SQL SERVER 2005 数据库状态为“可疑”的解决方法 
--MyDB为修复的数据名
USE MASTER
GO
SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE
GO
ALTER DATABASE MyDB SET EMERGENCY
GO
sp_dboption 'MyDB', 'single user', 'true'
GO
DBCC CHECKDB('MyDB','REPAIR_ALLOW_DATA_LOSS')
GO
ALTER DATABASE MyDB SET ONLINE
GO
sp_configure 'allow updates', 0 reconfigure with override
GO
sp_dboption 'MyDB', 'single user', 'false'
GO
-------------------------------------------------
当数据库发生这种操作故障时,可以按如下操作步骤可解决此方法,打开数据库里的Sql 查询编辑器窗口,运行以下的命令。  1、修改数据库为紧急模式  ALTER DATABASE Zhangxing SET EMERGENCY  2、使数据库变为单用户模式  ALTER DATABASE Zhangxing SET SINGLE_USER  3、修复数据库日志重新生成,此命令检查的分配,结构,逻辑完整性和所有数据库中的对象错误。当您指定“REPAIR_ALLOW_DATA_LOSS”作为DBCC CHECKDB命令参数,该程序将检查和修复报告的错误。但是,这些修复可能会导致一些数据丢失。  DBCC CheckDB (Zhangxing, REPAIR_ALLOW_DATA_LOSS)  4、使数据库变回为多用户模式  ALTER DATABASE Zhangxing SET MULTI_USER  也可以这样做:  1:重新建立一个,一样的数据库,路径名称,文件都一样。  2:关掉SQL Server服务;  3:把源文件COPY过来;  4:开启SQL Server服务,这样问题同样就解决了。
这4种办法都不行。其中我用第三种试过之后数据库的可疑俩字没有了,数据库能在客户端中打开了,但是好几个表都不正常。
比如其中一个表中共有24417条数据,但是只能用select top 23405 * from t1_1 order by id查询到第23405条,如果改成23406则报错:消息 824,级别 24,状态 2,第 1 行
SQL Server 检测到基于一致性的逻辑 I/O 错误 pageid 不正确(应为 1:26791,但实际为 1:8933)。在文件 'D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\dsc010207.mdf' 中、偏移量为 0x0000000d14e000 的位置对数据库 ID 5 中的页 (1:26791) 执行 读取 期间,发生了该错误。SQL Server 错误日志或系统事件日志中的其他消息可能提供了更详细信息。这是一个威胁数据库完整性的严重错误条件,必须立即纠正。请执行完整的数据库一致性检查(DBCC CHECKDB)。此错误可以由许多因素导致;有关详细信息,请参阅 SQL Server 联机丛书。
而且,该数据库在OA系统中不能访问,提示:无法打开登录所请求的数据库 "dsc010207_db"。登录失败。很奇怪!在刚出现问题后,我在操作之前备份了mdf和ldf文件。
请问我该怎么办呢?谁能帮我弄下呢?

解决方案 »

  1.   

    它自己检测到坏了,如果没有其他备份,是比较悲观的了如果不是正在写的时候突然掉电,硬盘缓存基本都能及时写入的,所以mssql这种现象是比较少的了
      

  2.   

    首先备份数据库,然后用Dbcc checkdb 命名,其中有repair模式,你试试修复看看.
      

  3.   

    你办法都试过以后那应该是没有什么办法了。 只能把可以用的数据倒出来。 如果你有备份的话就可以直接用页面恢复将出现错误的PAGE修复。 记住以后要备份啊。 
      

  4.   

    很正常的,数据库在突然断电的情况下,关机很容易出现写不一致,因为内部很多东西都是放在内存的,没来的急及时写到数据文件中,突然断电就会出现文件页与参数中的不一致,无法启动的,还有可能是文件损坏了。sql server相对好点,oracle突然断电就很悲催了,找备份,尽量恢复最近的吧
      

  5.   

    先找最近备份恢复下,如果确认是你说的那种情况,那没多少可能找回丢失的数据了。记得做一个每日备份的JOB
      

  6.   

    遇到这种情况一般是用数据库恢复(如果损坏页面少的话用页面恢复),如果没有备份,可以尝试DBCC CHECK修复(可能导致数据丢失,而且数据逻辑一致性可能会有问题)。如果是LOG文件损坏才尝试用Rebuild Log(也会出现数据丢失,一致性问题,因为新建的Log是空的,只能保证结构的一致性,如果Log中有没有提交或者需要UNDO的信息,新建Log后这一部分就会丢掉了).