sql server系统表损坏的解决方法

数据库 SQL Server
重要的sql server系统表损坏,的确是一个很让人头疼的问题,下文对sql server系统表损坏的原因作了详尽的分析,并给出了解决方法,供您参考。

如果sql server系统表损坏了,应该怎么办呢?下面就教您一个sql server系统表损坏的解决方法,供您参考,希望对您能够有所帮助。

一、sql server数据库中三张重要的sql server系统表
sysobjects:在数据库内创建的每个对象(约束、默认值、日志、规则、存储过程等)在表中占一行。
sysindexes:数据库中的每个索引和表在表中各占一行。
syscolumns:每个表和视图中的每列在表中占一行,存储过程中的每个参数在表中也占一行。
这三张表用ID(表ID)字段关联。这三张系统表一旦损坏,与之对应数据库对象将无法访问,其作用相当于DOS中的“文件分配表” 。

二、sql server系统表损坏的症状
用 DBCC CHECKDB 携带任何参数都无法修复数据库,也就是说:DBCC CHECKDB对这个帐套根本不起作用;
无法执行如下操作:
select * from sysobjects 或select * from sysindexes 或select * from syscolumns ;
无法用SQL server DTS或其他SQL 脚本导库工具进行导库,导库的中途失败,报告:连接中断;
在企业管理器或查询分析器中,部分用户数据表无法访问。

三、处理方法
处理这种数据库,分为两个大的步骤:
第一步:处理可以访问的数据表
1)找出哪些表不可访问,即:sql server系统表中哪些记录损坏;
2)用SQL server DTS把能够访问的用户数据表导入一个新的DataBase 。
在导库时,不能选折(1)中不能访问的数据表。
第二步:处理不可访问的数据表:
1)找出系统表中错误记录的ID;
2)根据“错误记录的ID”,删除sysobjects、sysindexes、syscolumns 表错误的记录;
3)根据“错误记录的ID” ,重建系统表记录;
4)重建完毕,如果该表可以访问,那么用DTS单独将此表导入新的DataBase。
说明:重建sql server系统表方式不一定会成功,比如由于DISK I/O错误,如果仅仅是保存系统表的磁盘扇区出错,那么重建系统表方式可以挽回数据。 如果保存用户数据表的磁盘扇区出错,那么即使重建系统表也不能解决问题。如果重要的用户数据表无法导库,如:t_Voucher、 IcStockbill、ICSale等,那么可以用用“第二步”中的方法一试。

 

 

 

 

【编辑推荐】

带您了解SQL Server游标

带您了解SQL Server触发器管理

SQL Server权限的分配管理

Web环境中的SQL Server验证

SQL Server数据转换服务简介

责任编辑:段燃 来源: 互联网
相关推荐

2010-09-16 15:36:26

SQL Server2

2010-10-19 15:45:32

SQL Server创

2010-10-19 10:25:29

SQL Server连

2010-11-08 16:16:57

SQL Server远

2010-10-19 12:22:02

SQL Server远

2010-11-10 13:42:32

SQL Server删

2010-09-03 11:05:59

SQL删除

2010-09-14 11:45:16

Sql Server系

2010-10-19 11:08:00

SQL Server安

2011-07-22 13:46:41

SQL Server MDAC

2009-05-04 13:43:16

SQL Server置疑数据库恢复

2010-11-11 14:36:11

SQL Server系

2010-10-20 17:21:07

连接SQL Serve

2011-04-02 13:57:05

Sql Server

2010-10-21 09:43:15

2011-08-23 16:45:52

JSP链接SQL Se

2010-11-08 14:14:12

安装SQL Serve

2010-11-10 14:54:24

SQL Server系

2010-09-08 15:28:50

SQL Server复制

2011-08-09 12:15:08

SQL Server日志已满
点赞
收藏

51CTO技术栈公众号