本文共 1868 字,大约阅读时间需要 6 分钟。
盐酸特比萘芬凝胶
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 textEXEC 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 能修复时就不用这命令转载地址:http://fzrli.baihongyu.com/