sqlserver系统表损坏处理方法_第1页
sqlserver系统表损坏处理方法_第2页
sqlserver系统表损坏处理方法_第3页
sqlserver系统表损坏处理方法_第4页
sqlserver系统表损坏处理方法_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、v1.0可编辑可修改SQL Serve系统表损坏的处理方法、SQL SV戡据库中三张重要的系统表sysobjects :在数据库内创建的每个对象(约束、默认值、日志、规则、存储过程等)在表中占一行sysindexes :数据库中的每个索引和表在表中各占一行。syscolumns:每个表和视图中的每列在表中占一行,存储过程中的每个参数在表中也占一行这三张表用ID (表ID)字段关联。这三张系统表一旦损坏,与之对应数据库对象将无法访问,其作用相当于 DO中的“文件分配表”。二、系统表损坏的症状用DBCCCHECKDB带任何参数都无法修复数据库,也就是说:DBCCHECKDB对这个帐套根本不起作用;

2、无法执行如下操作:select * from sysobjects 或 select * from sysindexes或 select * from syscolumns ;无法用SQL server DTS或其他SQL脚本导库工具进行导库,导库的中途失 败,报告:连接中断;在企业管理器或查询分析器中,部分用户数据表无法访问。三、处理方法处理这种数据库,分为两个大的步骤:第一步:处理可以访问的数据表1)找出哪些表不可访问,即:系统表中哪些记录损坏;2)用SQL server DTS把能够访问的用户数据表导入一个新的 DataBase 在导库时,不能选折(1)中不能访问的数据表。第二步:处理不

3、可访问的数据表:1)找出系统表中错误记录的ID;2)根据“错误记录的 ID“,删除 sysobjects 、 sysindexes、syscolumns 表 错误的记录;3)根据“错误记录的ID” ,重建系统表记录;4)重建完毕,如果该表可以访问,那么用DTS单独将此表导入新的DataBase。说明:重建系统表方式不一定会成功,比如由于DISK I/O错误,如果仅仅是保存系统表的磁盘扇区出错,那么重建系统表方式可以挽回数据。如果保存用户数据表的磁盘扇区出错,那么即使重建系统表也不能解决问题。如果重要的用户数据表无法导库,如:t_Voucher、IcStockbill 、ICSale等,那么可以

4、用用“第二步”中的方法一试。四、例例:一 sql svr数据库,实体名为:AIS181217用dbcc checkDBM,报告(用dbcc checkDB任何参数者b是以下提示):服务器:消息8966 ,级别16 ,状态1 ,行1未能读取并闩锁页(1:29262)(用闩锁类型 SH)。SYSOBJECT趺败。DBCC执行完毕。如果 DBCC输出了错误信息,请与系统管理员联系。执行 select * from sysobjects ,报告如下:服务器:消息644 ,级别21,状态3 ,行1未能在索引页 (1:29262) 中找到 RID ' 16243a6d19100' 的索引条

5、目(索引 ID 0 , 数据库AIS181217')。连接中断但是执行 select * from sysindexes 和 select * from syscolumns 正常。这说明只有 sysobjects 表损坏,而 sysindexes 和 syscolumns 没有问题。22003/6/30v1.0可编辑可修改处理步骤:第一步:处理可以访问的数据表找出哪些表不可访问;新建立一个sql svr数据库,数据库实体名为AisNew。进入查询分析器,执行如下SQL*use AIS181217DECLARTbNameVARCHA(R0)DECLARFindErrTable SCRO

6、LL CURSOR FORselect name from . sysobjects where xtype= 'u'order by nameOPENFindErrTableFETCHFindErrTable INTO TbNameWHILE FETCH_STA<USBEGIN+ TbName)print TbName exec( select top 1 * fromFETCHFindErrTable INTO TbNameENDPRINT 'Scan Complate CLOS田indErrTableDEALLOCATEindErrTable*执行此SQ&q

7、uot;出的报告的最后几行为:Tvoucher服务器:消息644 ,级别21 ,状态3 ,行1未能在索引页(1:29262) 中找到RID ' 161dd201a100 '的索引条目(索引ID 0 ,数据库 'AIS181217')。连接中断根据以上报告可以知道T_voucher表在sysobjects表中的对应记录出错,造 成T_voucher不能访问。修改上面的SQL在声明游标的记录集中屏蔽 T_voucher表。 即:DECLARFindErrTable SCROLL CURSOR FORselect name from . sysobjects wher

8、e xtype= 'u' and name != ' t voucher order by name修改完毕,继续执行此SQL如此反复,就能够不断报告出sysobjects中那些表不能访问。导库用SQL DTSX具将AIS181217中可以访问的数据表导入 AisNew。第二步:处理不可访问的数据表: 找出系统表中错误记录的ID- -获得 AIS181217 中 T_voucher 表在 sysobjects 中的 ID :SELECTid FROM WHEREiame=' t_voucher '=» 123(说明:通常即使sysobjects

9、 表损坏,不能做select * from sysobjects 查询, 但是可以做 select ID,name from sysobjects 查询。如果 select ID,name from sysobjects 查询也不能执行,可以对照 AisNew和AIS181217两个数据库中的同名 表:syscolumns。根据表中T_voucher所占字段的个数以及各个字段的名称,在中 找出T_voucher所对应的记录,由此获得T_voucher在AIS181217数据库的系统表42003/6/30v1.0可编辑可修改中所分配的ID。)- -获得 AisNew 中 T_voucher 表在

10、 sysobjects 中的 ID :SELECTd FROM WHEREiame=' t_voucher ' =» 456删除AIS181217中系统表中错误记录:DELETE WHEREI=123DELETE WHEREI=123DELETE WHEREI=123重建系统表记录- -重建表中T_voucher表对应的记录:INSERT INTO(name,id,xtype,uid,info,status,base_schema_ver,replinfo,parent_obj,crdate,ftcatid) SELECT't_voucher_b '

11、,123,xtype,uid,info,status,base_schema_ver,replinfo,parent_obj,crda te,ftcatid FROM . sysobjects WHERid=456- -重建表中t_voucher表对应的记录:INSERT INTO (id,status,first,indid,root,minlen,keycnt,groupid,dpages,reserved,used,rowcnt,rowmodctr,reserved3,reserved4,xmaxlen,maxirow,OrigFillFactor,StatVersion,reserve

12、d2,Fir stIAM,impid,lockflags,pgmodctr,keys,name,statblob) SELECT123,status,first,indid,root,minlen,keycnt,groupid,dpages,reserved,used,rowcnt,rowm odctr,reserved3,reserved4,xmaxlen,maxirow,OrigFillFactor,StatVersion,reserved2,FirstIAM,impid,lockflags,pgmodctr,keys,name,statblobFROM WHEREd=456- -重建表中t_voucher表对应的记录:INSERT INTOSELECTname,123,xtype,typestat,xusertype,length,xprec,xscale,colid,xoffset,bitpos,reserved,colstat,cdefault,domain,number,colORDERBY,autoval,offset,collationid,languageFROM WHERid=456()用DT/独将t_voucher_b表导入新的DataBase经过以上操作,AIS181217中t_voucher_b 表与原t_voucher表共用同一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论