我的数据库是MSSQL2008现在其中一个数据库变成了可疑的状态了。在网上查了半天说:先设置紧急模式等
看的这个解决方法
但是MSSQL2008中不能设置紧急模式,提示“不允许对系统目录进行即席更新。”在2000中是可以的。
求各位大大们帮帮忙吧。急呀~!~!

解决方案 »

  1.   

    我以前用:ALTER DATABASE test SET   EMERGENCY  改为紧急来修复过数据库。2008的已经是目录视图,不是实体表,所以你是不能更改的。
      

  2.   

    我记得当时是公司的TFS(源代码管理库)出问题了,然后在网上找了,说把库先设为紧急,也就是上面的语句,然后使用DBCC CHECKDB(xxx,REPAIR_ALLOW_DATA_LOSS ),搞了一次之后就可以用了,然后把数据库设回正常,就可以像往常那样用
      

  3.   

    你那库为啥变成置疑了?
    多大的库?有些情况你直接附加即可.成功后DBCC CHECKDB一下按你搜索的可以解决.
      

  4.   

    USE MASTER
    GOSP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE
    GOUPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='DBName'
    Gosp_dboption 'DBName', 'single user', 'true'
    Goupdate sysdatabases set status =28 where name='DBName'
    Gosp_configure 'allow updates', 0 reconfigure with override
    Go sp_dboption 'DBName', 'single user', 'false'
    GoDBCC CHECKDB('DBName') 
    GO
      

  5.   

    1、修改数据库为紧急模式ALTER DATABASE 数据库名 SET EMERGENCY2、使数据库变为单用户模式ALTER DATABASE 数据库名   SET SINGLE_USER3、修正数据库日志重新生成,此命令检查的分配,结构,逻辑完整性和所有数据库中的对象不正确。当您指定“REPAIR_ALLOW_DATA_LOSS”作为DBCC CHECKDB命令参数,该程序将检查和修正报告的不正确。但是,这些修正可能会导致一些数据丢失。 DBCC CheckDB (数据库名 , REPAIR_ALLOW_DATA_LOSS)4、使数据库变回为多用户模式ALTER DATABASE 数据库名 SET MULTI_USER
      

  6.   

    [Quote=引用 6 楼 awaly 的回复:]
    SQL code1、修改数据库为紧急模式ALTER DATABASE 数据库名 SET EMERGENCY2、使数据库变为单用户模式ALTER DATABASE 数据库名   SET SINGLE_USER前两步骤是对的,在更改为单用户模式之后运行DBCC CHECKDB看报什么错误,然后再做处理(到时候可以把错误贴出来)。因为使用DBCC with REPAIR_ALLOW_DATA_LOSS会导致数据丢失,可能会导致系统数据逻辑出现问题。建议发行那个表信息出问题之后可以讲所有数据导出来,然后再修复。 另外DBCC with REPAIR_ALLOW_DATA_LOSS不是万能的,有些错误也无法修复(比如系统信息损坏)。