你恢复后,别重启,直接把数据都导出来把。之前帮一个网友看了一个问题,就是能恢复,但是只要一设置状态为online,就又不行了。最后,把表定义,还有数据,全部导出来了。

解决方案 »

  1.   


    在sql server 2008中,有一个导出脚本的功能,可以导出脚本,和数据的,不知道2000上有没有
      

  2.   

    步骤5,执行的SQL语句改为如下,看能否读取其中的数据,若能则手工转移数据到新库中..use master
    goalter database [置疑的数据库名] set emergency  --> 将数据库设为紧急状态.
      

  3.   

    一个很重要的步骤你没有操作,重建日志!
    先分离数据库
      企业管理器--右键cyls1的数据库--所有任务--分离数据库
      然后备份你的cyls1数据库的文件,再按下面的步骤处理:
      1.新建一个同名的数据库
      2.再停掉sql server
      3.用cyls1数据库的文件覆盖掉这个新建的同名数据库
      4.再重启sql server
      5.此时打开企业管理器时新建的同名数据库会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名)
       USE MASTER
            GO        SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE
            GO        UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='置疑数据库'
            Go    --此时需要重建日志
            dbcc rebuild_log('cyls1','d:\cyls1.ldf')  --日志文件路径自己根据需要修改
        --执行重建日志时,如果在指定路径已存在cyls1.ldf,会报错,先删掉那个cyls1.ldf,再执行重建日志的语句        update sysdatabases set status =28 where name='置疑数据库'
            Go        sp_configure 'allow updates', 0 reconfigure with override
            Go上面的执行完成后,需要对数据进行检查和修复,执行下面的脚本,直到没有错误为止,如果有某个表总是报同样的错误,需要单独处理这个表的数据exec sp_dboption 'cyls1', N'single', N'true' --将目标数据库置为单用户状态 
    dbcc checkdb('cyls1',REPAIR_ALLOW_DATA_LOSS) 
    dbcc checkdb('cyls1',REPAIR_REBUILD) 
    exec sp_dboption 'cyls1', N'single', N'false'--将目标数据库置为多用户状态 如果总是结果是同样的表有错误,应该针对表做dbcc checktable