某数据库的前端程序由其它厂商提供,并发量在20个左右,近来常出现阻塞,基本调用的语句都是存贮过程。备份的时候,提示如下:消息 3013,级别 16,状态 1,第 1 行
BACKUP DATABASE 正在异常终止。
消息 845,级别 17,状态 1,第 1 行
等待用于页 (1:1804686),数据库 ID 8 的缓冲区闩锁类型 3 时发生超时。DBcc Checkdb时提示:
消息 1823,级别 16,状态 2,第 1 行
无法创建数据库快照,因为它未能启动。
消息 7928,级别 16,状态 1,第 1 行
无法创建数据库快照以进行在线检查。可能前一个错误消息已给出原因,或者某个基础卷不支持稀疏文件或备用流。请尝试使用独占访问来运行离线检查。
.....在线状态的情况下,执行:
alter database 数据库名 set emergency,10小时也不能完成。有何妙策做修复呢?,调整前端程序基本不可能的。

解决方案 »

  1.   


     alter database 数据库名 set single_user  with rollback immediate 这个就是独占访问的语法
      

  2.   

    谢谢楼上的回复,
    用dbcc checkdb('AAA',REPAIR_ALLOW_DATA_LOSS),可以解决问题,不过我想寻找其它的解决办法。
    继续等待,谢谢啦。。
      

  3.   


    楼上的这个办法可以考虑,谢谢,只不过数据库比较大,有50G。1、
    磁盘没有坏道,叫专人检查过。
    2、
    重建索引之后,再dbcc checkdb,提示如下:消息 8929,级别 16,状态 1,第 1 行
    对象 ID 2011073238,索引 ID 1,分区 ID 72057776454303744,分配单元 ID 72058003631177728 (类型为 In-row data): 在 ID 为 1471545344 的行外数据中发现错误,该数据由 RID = (1:2310056:3) 标识的 data 记录所有
    消息 2533,级别 16,状态 1,第 1 行
    表错误: 看不到分配给对象 ID 2011073238,索引 ID 1,分区 ID 72057776454303744,分配单元 ID 72058003631308800 (类型为 LOB data)的页 (1:657006)。该页可能无效,或者页头中可能包含错误的分配单元 ID。
    消息 8965,级别 16,状态 1,第 1 行
    表错误: 对象 ID 2011073238,索引 ID 1,分区 ID 72057776454303744,分配单元 ID 72058003631308800 (类型为 LOB data)。位于页 (1:657006),槽 0,文本 ID 1471545344 的行外数据节点由页 (1:2310056),槽 3 引用,但扫描过程中未检测到该节点。3、用dbcc checkdb('AAA',REPAIR_ALLOW_DATA_LOSS),执行多次之后能修复,但使用者报告说数据丢失。继续寻找其它解决办法。