


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、SQL Serve系统表损坏的处理方法一、SQL SV瞰据库中三张重要的系统表sysobjects :在数据库内创建的每个对象(约束、默认值、日志、规则、存 储过程等)在表中占一行。sysindexes :数据库中的每个索引和表在表中各占一行。syscolum ns :每个表和视图中的每列在表中占一行,存储过程中的每个参数 在表中也占一行。这三张表用ID (表ID)字段关联。这三张系统表一旦损坏,与之对应数据库对 象将无法访问,其作用相当于 DOS的“文件分配表”。二、系统表损坏的症状用DBCCCHECKD携带任何参数都无法修复数据库,也就是说:DBCCCHECKDB 对这个帐套根本不起作用;
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 数据库,实体名为:AIS20030529181217用DBCC CHECK检测,报告(用DBCC CHECKDB任何参数都是以下提示):服务器:消息8966,级别16,状态1,行1未能读取并闩锁页(1:29262)(用闩锁类型 SH)。SYSOBJECT缺败。DBCC执行完毕。如果 DBCC输出了错误信息,请与系统管理员联系。执行 select * from sysobjects,报告如下:服务器:消息644,级别21,状态3,行1未能在索引页 (1:29262) 中找到 RID 6243a6d19100的索引条目(索引 ID 0,数
5、 据库 AIS20030529181217 ')。连接中断但是执行 select * from sysindexes 和 select * from syscolumns 正常。 这说明只有 sysobjects 表损坏,而 sysindexes 和 syscolumns 没有问题。处理步骤:第一步:处理可以访问的数据表(1.1) 找出哪些表不可访问;新建立一个sql svr数据库,数据库实体名为AisNew。进入查询分析器,执 行如下SQL*use AIS20030529181217DECLARTbNameVARCHA(RO)DECLARFi ndErrTable SCROLL CU
6、RSOR FORselect namefrom AisNew.dbo. sysobjects where xtype= u" order by nameOPENFi ndErrTableFETCHFi ndErrTableINTO TbNameWHILE FETCH_STA<USBEGINprint TbNameexec( select top 1 * from ' + TbName)FETCHFi ndErrTableINTO TbNameENDPRINT Scan Complate 'CLOSED ndErrTableDEALLOCATEi ndErrTab
7、le*执行此SQL给出的报告的最后几行为:T_voucher服务器:消息644,级别21,状态3,行1未能在索引页(1:29262) 中找到RID 1'61dd201a100'的索引条目(索引 ID 0,数据库 AIS20030529181217 )。连接中断根据以上报告可以知道T_voucher表在sysobjects表中的对应记录出错,造 成T_voucher不能访问。修改上面的SQL在声明游标的记录集中屏蔽 T_voucher表。 即:'and name !='voucherDECLARFi ndErrTableSCROLL CURSOR FORselec
8、t name from AisNew.dbo. sysobjects where xtype= order by n ame修改完毕,继续执行此SQL如此反复,就能够不断报告出 sysobjects中那些 表不能访冋(1.2) 导库用SQL DTS工具将AIS20030529181217中可以访问的数据表导入 AisNew。第二步:处理不可访问的数据表:(2.1)找出系统表中错误记录的ID-获得 AIS20030529181217中 T_voucher 表在 sysobjects 中的 ID :SELECTid FROMMS20030529181217.dbo. sysobjects WHER
9、Eame= 't_voucher '=123(说明:通常即使sysobjects 表损坏,不能做select * from sysobjects 查询, 但是可以做 select ID,name from sysobjects 查询。如果 select ID,name from sysobjects 查询也不能执行,可以对照 AisNew和AIS20030529181217两个数据库 中的同名表:syscolumns。根据 AisNew.dbo. syscolumns 表中 T_voucher 所占字段 的个数以及各个字段的名称,在AIS20030529181217.dbo.
10、syscolumns中找出T_voucher所对应的记录,由此获得 T_voucher在AIS20030529181217数据库的系 统表中所分配的ID。)-获得 AisNew 中 T_voucher 表在 sysobjects 中的 ID :SELECTid FROMAisNew.dbo. sysobjects WHEREame= 't_voucher '=456(2.2) 删除AIS20030529181217中系统表中错误记录:WHEREI=123WHEREI=123DELETEAIS20030529181217.dbo. sysobjectsDELETEAIS20030
11、529181217.dbo. sysin dexessyscolumns WHERid=123DELETEAIS20030529181217.dbo.(2.3) 重建系统表记录-重建 AIS20030529181217.dbo.sysobjects 表中 T_voucher 表对应的记录:INSERT INTO AIS20030529181217.dbo. sysobjects(n ame,id,xtype,uid,i nfo,status,base_schema_ver,repli nfo,pare nt_o bj,crdate,ftcatid)SELECTt_voucher_b :123,
12、xtype,uid,info,status,base_schema_ver,replinfo,parent_obj,crdate,ftcatidFROM AisNew.dbo. sysobjects WHERid=456-重建 AIS20030529181217.dbo.sysindexes 表中 t_voucher 表对应的记录:INSERT INTO AIS20030529181217.dbo. sysin dexes(id,status,first,i ndid,root, minlen ,keyc nt,groupid,dpages,reserved,used,rowc nt,rowm
13、 odctr,reserved3,reserved4,xmaxle n,maxirow,OrigFillFactor,StatVersio n,reserved2,Fir stIAM,impid,lockflags,pgmodctr,keys ,n ame,statblob)SELECT123,status,first,i ndid,root, minlen ,keyc nt,groupid,dpages,reserved,used,rowc nt,rowm odctr,reserved3,reserved4,xmaxle n,maxirow,OrigFillFactor,StatVersio
14、 n,reserved2,Fir stIAM,impid,lockflags,pgmodctr,keys ,n ame,statblobFROMXisNew.dbo. sysindexes WHERid=456-重建 AIS20030529181217.dbo.syscolumns 表中 t_voucher 表对应的记录:INSERT INTO AIS20030529181217.dbo. syscolu mns(n ame,id,xtype,typestat,xusertype,le ngth,xprec,xscale,colid,xoffset,bitpos,reserve d,colst
15、at,cdefault,doma in,nu mber,colorderby,autoval,offset,collati oni d,la nguage) SELECTn ame,123,xtype,typestat,xusertype,le ngth,xprec,xscale,colid,xoffset,bitpos,reserved,colstat,cdefault,doma in,nu mber,colORDERBY,autoval,offset,collati oni d,la nguage FROMXisNew.dbo. syscolumns WHERid=456(2.4 )用DTS单独将t_voucher_b表导入新的DataBase经过以上操作,A
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 突发事件应急响应机制-洞察及研究
- Module 6 Unit2 Hobbies can make you grow as a person.教学设计- 2023-2024学年外研版八年级英语下册
- 压缩机控制电路故障诊断与检测教学设计中职专业课-电动汽车控制系统故障诊断与检修-新能源汽车运用与维修-交通运输大类
- 第5课 五味瓶(教学设计)-人教版(2012)美术二年级下册
- 数字出版物质量评价体系与用户画像算法的优化研究-洞察及研究
- 档案信息安全建设-洞察及研究
- 第16课 儿字底 系字底说课稿小学书法人美版五年级上册-人美版
- “山东师范大学2025年研究生入学考试(体育学)试题及答案”
- (水滴系列)七年级地理上册 序言 让我们一同走进地理说课稿2 (新版)商务星球版
- 2025征兵政治笔试题及答案
- 仁爱版九年级英语上册unit2topic1复习课市公开课一等奖省课获奖课件
- 北京市国内旅游合同书
- 公司品牌建设五年规划
- 第二单元 三国两晋南北朝的民族交融与隋唐统一多民族封建国家的发展 知识清单 高中历史统编版(2019)必修中外历史纲要上册
- 居室环境的清洁与消毒
- GB/T 39766-2021人类生物样本库管理规范
- GB/T 2900.50-2008电工术语发电、输电及配电通用术语
- GB/T 2518-2008连续热镀锌钢板及钢带
- GB/T 1689-2014硫化橡胶耐磨性能的测定(用阿克隆磨耗试验机)
- 第二讲国外教育评价的发展历程
- 中外管理思想史-课件
评论
0/150
提交评论