当前位置:首页 > 系统

SQLserver2000数据库修复办法总结

happyfhb15年前 (2012-05-02)系统3270
摘要:总结步骤如下:1、检测数据库, 使用命令(Dbcc checkdb) 拿到数据库后附加到本地 SQLserver 使其运行,打开企业管理器,查看它。 同时打开查询分析器,在里面输入Dbcc checkdb 检测数据库命令然后回车 即可以看到数据库的分析资料看到问题, 评注:拿到问题先不要盲目的卸载…

总结步骤如下:


1、检测数据库, 使用命令(Dbcc checkdb) 拿到数据库后附加到本地 SQLserver 使其运行,打开企业管理器,查看它。 同时打开查询分析器,在里面输入Dbcc checkdb 检测数据库命令然后回车 即可以看到数据库的分析资料看到问题, 评注:拿到问题先不要盲目的卸载 SQLServer,本次因为新手,上手后就把 数据库卸载,这样就耗费了一天的时间,过没有任何作用,测试服务器的完整性 可以拿一个好的数据库做对比,自己可以建一个“test”,如果测试数据库运行 正常,则不需要对服务器做任何改动。千万不要改动系统,麻烦会更大。 提示:错误会以红色显示。


2、简单修复:命令:dbcc checkdb 输入以下两句尝试修复。

DBCC CHECKDB('数据库名',repair_allow_data_loss)
DBCC CHECKDB('数据库名',repair_rebuild)


不管他究竟哪里错了, 先用这两句试试一般的索引系统文件丢失, SQLserver 都可以解决这个问题,基本就差不多了。但是对于主键索引损坏,这个命令基本 修不好,所以对一个满身是伤的数据库,他可以修复 70%。

注:修复时系统提示必须要在单用户模式下才可以生效,用户可以去企业管 理器,对要修理的数据库:右击属性-选项-限制访问-单用户。也可以使用以下语句实现:

ALTER DATABASE 数据库名 SET single_USER
GO

---改为单用户


ALTER DATABASE 数据库名 SET MULTI_USER
GO
---改为多用户

 
继续使用 dbcc checkdb 检测,如果继续报错。 再次运行:
DBCC CHECKDB('DataBasename') with NO_INFOMSGS,PHYSICAL_ONLY
然后再运行:
DBCC CHECKDB(' DataBasename ',repair_allow_data_loss) WITH TABLOCK
再次运行:DBCC CHECKDB('DB name')
系统显示修复成功,说明本次问题主 要由索引等数据库系统本身问题引起,这样的修复可能会导致数据丢失,但是绝 对不会是大批丢失,基本没有影响。


3、检测表:命令:dbcc checktable(‘tablename’) 接上述检测提示:我们可以看到一个 id 号,这个基本就是这个错误的表在 系统表“sysobjects”里面的注册信息。

输入如下语句即可以看见:
select * from sysobjects where id=1205579333(错误提示号码)
接下来检测这张表究竟是什么问题。 输入:
dbcc checktable(‘tablename’)

接下来将会得到一些错误提示,基本上就是检测表的时候那些,提示什么 B 树错误, 父节点, 子节点错误, 这些都别管, 因为这个可能就是索引引起的错误:

尝试用下列语句修复: DBCC CHECKtable('Tablename',repair_rebuild)

执行完后查看提示:如果出现下面的提示 CREATE UNIQUE INDEX 终止,因为发现了索引 ID 1 的重复键。最重要的主 键为 '3'。这里基本上就可以确定就是索引出的问题,而且数据表没有被修复的 可能很可能就是内容产生的问题。根据提示,我们得出的结论就是主键重复。 这是我们使用 select 查询语句是看不到的甚至表里面打开也没有反映。此时, 关闭查询分析器, 打开企业管理器, 找到那个数据表, 然后右击选择设计表, 选择主键,右击,取消主键,回到查询分析器,找到该表,右击选择索引,这时 候表以前所有的索引都能看见了,但是上面的唯一性选项很明显没有了,然后给 表里面添加一个新的字段,字段名 id 需要生成编号:

语句如下:
alter table t_item add id integer identity
该字段用完后删除,
语句如下:
alter table t_item drop column id
在查询分析器这里右击索引,选择唯一性选项,然后点击确定,系统会提示 重复键,和最重要的主键 ID,根据 id 数字,进行查询 如提示最重要的键值是 3 则, select * from t_item where fitemid=3 有时候查询的结果,是合法的,比如这个 3 可能只有一条,这个时候,就右 击索引,点击编辑勾选唯一性,在列上面去掉一个,从上往下第一个开始,但是 必须记住他的名字,最好写下来,这时候,你会发现错误信息里面的 ID 换成了 另外一个数字, 继续用 select 语句查询该数字, 字段仍然是该表的第一个字段, 你会发现他有两条, 仔细对比这两条, 什么都是一样的, 每一个字段的值都一样, 这显然不符合逻辑,用刚才添加的 id 记录删除一条,

语句如下: Delete tablename where id=
两着任何一个,删除完后, 右击恢复刚才被点掉的那一条列名,勾选上唯一性,点击确定,则正常,回 到企业管理器,打开表设计,设置主键。完成。 回到查询分析器,
输入 dbcc checktable
 显示正常,再次检测数据库,显 示正常。删除刚才增加的列,修复完成。 结论:修复这类数据表,别急着导出数据,新建库文件,这个应该还不到那 一步,最好就是能这样修复,少动干戈,如果是主键重复,你导出数据,在把这 个错误的数据倒进来(这里假设能正常导入) ,表的错误会依然存在。
 

扫描二维码推送至手机访问。

版权声明:本文由海海日记-冯海滨博客发布,如需转载请注明出处。

本文链接:http://www.fenghaibin.com/?id=897

“SQLserver2000数据库修复办法总结” 的相关文章

dos下装系统全攻略

dos下装系统非常的简单。1.准备一个矮人DOS工具箱 或者一键ghost 下载地址:http://doshome.net/bbs/ http://pzz.cn/bbs/index.php 并安装到系统中2.准备一个ghost11.exe 文件 放在非系统盘符 在准备一个从网上下…

分区表损坏的修复原理解析

硬盘主引导记录所在的扇区也是病毒重点攻击的地方,通过破坏主引导扇区中的DPT(分区表),即可轻易地损毁硬盘分区信息。分区表的损坏通常来说不是物理损坏,而是分区数据被破坏。因此,通常情况下,可以用软件来修复。 通常情况下,硬盘分区之后,备份一份分区表至软盘、光盘或者USB盘上是极为明智的。这个方…

移动硬盘打开时显示执行页内操作时错误的解决方法

今日在客户哪里遇到一个很重的问题,分享出来给大家以后借鉴。客户的服务器要重装系统,给我一个盈动硬盘让我把数据都备份出来。刚开始的时候硬盘很正常,可是当写入几十G的东西后在重新插到别的机器上拷贝的时候发现硬盘打不开了。而且反应很慢 最后终于有个提示 提示是:“执行页内操作时错误&rdquo…

SATA硬盘AHCI模式进系统蓝屏的解决办法

首先说明,XP系统不支持 硬盘AHCI模式 进行安装 安装就会出现蓝屏的现象。解决办法将硬盘模式改成IDE 在安装OK 问题搞定了。还有部分PC机装服务器操作系统会出现各种各样的问题。没有很好的办法改成XP就好啦。…

用活系统配置实用程序

用活系统配置实用程序

初学者在使用电脑过程中,肯定会碰到各种各样的问题:如怎么管理电脑的自启动程序、如何查看加载的系统服务、怎样从安装光盘提取丢失的系统文件等。为了解决类似问题,微软在系统中提供了一个实用工具——系统配置实用程序(Msconfig)。以系统管理员身份登录系统后,单击“开…

JUJUMAO XPSP2 2007增强版 我用过的最好的操作系统

JUJUMAO XPSP2 2007增强版 我用过的最好的操作系统我用过的最好用的操作系统。大家不要看他老但是这个系统真的很好用。基本上是原装正版。非常好。有需要的朋友 我可以通过QQ传给你。自己做维护装了几百个电脑了 感觉就这个系统最好用了。现在网上已经没有下载的了 我这里有iso镜像 可以刻录哦…

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。