盐酸特比萘芬凝胶
CREATE UNIQUE NONCLUSTERED INDEX [pk_idcode] ON [dbo].[IDCODE]
(
[IDCODE] ASC
)
数据库 CHECKDB 发现了x个分配错误和 x 个一致性错误
现在以数据库text为例,说明该问题的处理方法:
--1、在SQL查询分析器中执行以下语句:(注以下所用的text为数据库名称,请用户手工改为自己的数据库名)
use pg
dbcc checkdb;
DBCC CHECKDB WITH NO_INFOMSGS;
默认情况下,CheckDB命令会将输出所有的信息,但通常我们并不关心这些信息,而是只关心错误信息,
因此实际中通常给DBCC指定不显式信息的参数,如代码清单3所示。
--2、查看查询结果,有很多红色字体显示,最后结果有这样的提示:
--CHECKDB --发现了x个分配错误和 x 个一致性错误(在数据库 'text' 中)。
--一般情况下,引起分配错误的原因是磁盘损坏或突然停电;一致性错误可能是数据库中的表或索引坏,一般都可修复。
--3、查看红色字体,并把有错误的数据库表名记录下来,或把索引损坏的表名记录下来。
--4、把数据库设置为单用户模式,直接在查询分析器中执行以下语句即可:(如发现语句运行不成功,请把用户的电脑注销一下,后再重新运行一下。)
EXEC sp_dboption 'pg', 'single user', 'TRUE'
--5、进入查询分析器执行如下语句:
use text
EXEC sp_dboption 'pg', 'single user', 'TRUE'
dbcc checkdb ('pg',REPAIR_REBUILD) -------执行不会丢失数据的修复
dbcc checkdb('pg',repair_allow_data_loss) -------修复数据库
EXEC sp_dboption 'pg', 'single user','FALSE'
--6、再执行:dbcc checkdb,检测数据库,出现结果为:
--CHECKDB 发现了0个分配错误和 0个一致性错误(在数据库 'text' 中)。
--数据库已经修复完毕。
--7、取消单用户模式,即直接在查询分析器中执行以下语句即可:
EXEC sp_dboption 'pg', 'single user','FALSE'
这样这个数据库的错误修复就完成了。然后停止掉SQLSERVER,重新启动服务器就可以。
DBCC CHECKDB (xb28,repair_allow_data_loss)
执行以上修复,可能会丢失一些数据.
如果没有备份,也只能这样.
别盲目用数据库修复
用表修复
SELECT OBJECT_NAME(ID)--获取表名
--获取所有表
select s.name as NAME, convert(varchar(100), p.value) as COMMENT from sysobjects as s
left join sys.extended_properties as p on s.id=p.major_id and p.minor_id=0
where s.xtype='u' 、
EXEC sp_dboption 'pg', 'single user', 'TRUE'
DBCC CHECKTABLE(tablename)--检查
DBCC CHECKTABLE(IDCODE,REPAIR_REBUILD);--修复
DBCC CHECKTABLE(IDCODE,REPAIR_ALLOW_DATA_LOSS);--尝试修复报告的所有错误。 这些修复可能会导致一些数据丢失
EXEC sp_dboption 'pg', 'single user','FALSE'
select convert(varchar(10),MAKEDATE,120),COUNT(*)
from dbo.IDCODE
group by convert(varchar(10),MAKEDATE,120)
--有错误时再用以下命令修复
DBCC CHECKTABLE(IDCODE,REPAIR_ALLOW_DATA_LOSS );--修复
--REPAIR_ALLOW_DATA_LOSS --可能会造成数据丢失,所有安全起见,先用REPAIR_REBUILD 能修复时就不用这命令
4113

被折叠的 条评论
为什么被折叠?



