日期:2014-05-17  浏览次数:20354 次

急~!数据库可疑的问题
我的数据库是MSSQL2008现在其中一个数据库变成了可疑的状态了。

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

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

有些情况你直接附加即可.成功后DBCC CHECKDB一下

按你搜索的可以解决.
------解决方案--------------------
USE MASTER
GO

SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE
GO

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

sp_dboption 'DBName', 'single user', 'true'
Go

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

sp_configure 'allow updates', 0 reconfigure with override
Go 

sp_dboption 'DBName', 'single user', 'false'
Go

DBCC CHECKDB('DBName') 
GO

------解决方案--------------------
SQL code
1、修改数据库为紧急模式

ALTER DATABASE 数据库名 SET EMERGENCY

2、使数据库变为单用户模式

ALTER DATABASE 数据库名   SET SINGLE_USER

3、修正数据库日志重新生成,此命令检查的分配,结构,逻辑完整性和所有数据库中的对象不正确。当您指定“REPAIR_ALLOW_DATA_LOSS”作为DBCC CHECKDB命令参数,该程序将检查和修正报告的不正确。但是,这些修正可能会导致一些数据丢失。 

DBCC CheckDB (数据库名 , REPAIR_ALLOW_DATA_LOSS)

4、使数据库变回为多用户模式

ALTER DATABASE 数据库名 SET MULTI_USER

------解决方案--------------------
[Quote=引用:]
SQL code

1、修改数据库为紧急模式

ALTER DATABASE 数据库名 SET EMERGENCY

2、使数据库变为单用户模式

ALTER DATABASE 数据库名 SET SINGLE_USER

前两步骤是对的,在更改为单用户模式之后运行DBCC CHECKDB看报什么错误,然后再做处理(到时候可以把错误贴出来)。因为使用DBCC with REPAIR_ALLOW_DATA_LOSS会导致数据丢失,可能会导致系统数据逻辑出现问题。建议发行那个表信息出问题之后可以讲所有数据导出来,然后再修复。 另外DBCC with REPAIR_ALLOW_DATA_LOSS不是万能的,有些错误也无法修复(比如系统信息损坏)。

------解决方案--------------------
探讨

SQL code
1、修改数据库为紧急模式

ALTER DATABASE 数据库名 SET EMERGENCY

2、使数据库变为单用户模式

ALTER DATABASE 数据库名 SET SINGLE_USER

3、修正数据库日志重新生成,此命令检查的分配,结构,逻辑完整性和所有数据库中的对象不正确。当您指定“REPAIR_ALLOW_DATA_LOSS”作为DBCC CHECKD……