如何修复系统表sysindexes?

jyh070207 2011-11-02 05:45:49
如何修复系统表sysindexes?
因意外停电,导致数据库出错,经检查是用户数据库的sysindeses表出了问题,

在查询分析器中运行
select * from sysindexes
出错如下:
服务器: 消息 7105,级别 22,状态 6,行 1
text、ntext 或 image 节点的页 (1:97010),槽 1 不存在。

连接中断

-------------------------------
进行以下修复操作:
USE master
Go
sp_dboption 'db_03','single user','true'
Go
USE zcerp_psm_b
DBCC CHECKDB('db_03',REPAIR_ALLOW_DATA_LOSS)
Go

用单用户模式,
运用DBCC CHECKDB('db_03',REPAIR_ALLOW_DATA_LOSS)

出错信息如下:

服务器: 消息 8965,级别 16,状态 1,行 1
表错误: 对象 ID 2。text、ntext 或 image 节点(位于页 (1:97010),槽 6,文本 ID 321668513792)被页 (1:779),槽 2 引用,但在扫描中未曾发现该节点。
'sysindexes' 的 DBCC 结果。
DBCC 语句的修复级别导致回避了此修复。
系统无法自修复此错误。

对象 'sysindexes' 有 3903 行,这些行位于 187 页中。
CHECKTABLE 发现了 0 个分配错误和 11 个一致性错误(在表 'sysindexes' 中,该表的对象 ID 为 2)。

完成后依然没有修复!

请教如何修复已有问题的sysindexes表





...全文
834 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
-晴天 2011-11-02
  • 打赏
  • 举报
回复
这个问题应该不是sysindex表的错误,而是有索引错误的那个表,无法按现有索引找到相关的记录内容了.
-晴天 2011-11-02
  • 打赏
  • 举报
回复
建议:
将现有数据库中的含有text,ntext,image类型列的表,用导出的方法导到同一服务器的其他数据库中,然后在原数据库中用truncate table 命令删除所有记录,然后再用dbcc检查,不行再处理下一个表.相信在处理完有错误的表时,这个问题会被解决掉.然后再把数据导回来.
jyh070207 2011-11-02
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 fredrickhu 的回复:]
SQL code
USE MASTER
GO
sp_dboption ‘databaseName’, ’single user’, ‘true’
Go
DBCC CHECKDB(’databaseName’, REPAIR_REBUILD)
Go
USE databaseName
go
exec sp_msforeachtable ‘DBCC CHECKTABLE(''’?''’……
[/Quote]
采用允许丢失数据的方式修复,还是不行....主要是sysindexes表有问题
--小F-- 2011-11-02
  • 打赏
  • 举报
回复
USE MASTER
GO
sp_dboption ‘databaseName’, ’single user’, ‘true’
Go
DBCC CHECKDB(’databaseName’, REPAIR_REBUILD)
Go
USE databaseName
go
exec sp_msforeachtable ‘DBCC CHECKTABLE(''’?''’,REPAIR_REBUILD)’
go
sp_dboption ‘databaseName’, ’single user’, ‘false’
Go
如果还不行,可以采用允许丢失数据的方式修复,如下:
USE MASTER
GO
sp_dboption ‘databaseName’, ’single user’, ‘true’
Go
DBCC CHECKDB(’databaseName’, REPAIR_ALLOW_DATA_LOSS)
Go
USE databaseName
go
exec sp_msforeachtable ‘DBCC CHECKTABLE(''’?''’,REPAIR_REBUILD)’
go
sp_dboption ‘databaseName’, ’single user’, ‘false’
Go



复制如下命令,写入记事本,保存为:运行CHKDSK.bat 双击运行,完了重启电脑.一般能解决的.
@ECHO OFF
for %%1 in (c: d: e: f: G: h: i: j: k: l: M: N: O: P: Q: R: S: T: U: V: W: X: Y: Z:) do (if exist %%1 ECHO Y|chkdsk %%1 /R /x)
@pause
jyh070207 2011-11-02
  • 打赏
  • 举报
回复
重建不了表索引,用户表的数据都没有问题,有问题只是sysindexes表.
服务器: 消息 7105,级别 22,状态 6,行 1
text、ntext 或 image 节点的页 (1:97010),槽 1 不存在。

现在的想法是,能不能找有问题的记录对应的表,只这些表重建一下,是否可行,

整个库的导需要的时间太长.数据库现在还能用.
中国风 2011-11-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jyh070207 的回复:]

是sql 2000 用户数据库中sysindexes,
DBCC DBREINDEX 出相同的错误.
[/Quote]

修復前備份一下,看所有表的索引都重建一下,再看看有沒有

有錯時,新建DB把數據導入新DB。
jyh070207 2011-11-02
  • 打赏
  • 举报
回复
是sql 2000 用户数据库中sysindexes,
DBCC DBREINDEX 出相同的错误.
中国风 2011-11-02
  • 打赏
  • 举报
回复
SQL2000?

sysindexes為系統表
-晴天 2011-11-02
  • 打赏
  • 举报
回复
DBCC DBREINDEX
-晴天 2011-11-02
  • 打赏
  • 举报
回复
重建一下索引试试.
Sybase ASE 15.7 开发文档:系统管理指南(卷一)共两卷 第 1 章系统管理概述 .......... 1 Adaptive Server 管理任务 .......... 1 系统管理任务所需的角色 .......... 2 使用 isql 执行系统管理任务 .......... 4 将 Sybase Central 用于系统管理任务 .......... 6 系统 .......... 6 查询系统 .......... 7 系统中的键 .......... 8 更新系统 .......... 8 系统过程 .......... 9 使用系统过程 .......... 9 系统过程 .......... 10 创建系统过程 .......... 10 系统扩展存储过程 .......... 11 创建系统 ESP .......... 11 记录错误消息 .......... 12 连接到 Adaptive Server .......... 12 interfaces 文件 .......... 12 目录服务 .......... 13 LDAP 作为一个目录服务 .......... 14 Adaptive Server 中可用的安全性功能 .......... 16 第 2 章系统及可选数据库 .......... 19 系统数据库概述 .......... 19 master 数据库 .......... 21 控制 master 数据库中的对象创建 .......... 22 备份 master 数据库并保留系统的副本 .......... 22 model 数据库 .......... 23 sybsystemprocs 数据库 .......... 24 tempdb 数据库 .......... 24 创建临时 .......... 25 sybsecurity 数据库 .......... 25 sybsystemdb 数据库 .......... 26 sybmgmtdb 数据库 .......... 26 pubs2 和 pubs3 样本数据库 .......... 26 维护样本数据库 .......... 27 pubs2 image 数据 .......... 27 dbccdb 数据库 .......... 27 sybdiag 数据库 .......... 28 确定安装脚本的版本 .......... 28 第 3 章系统管理入门 .......... 29 逻辑页大小 .......... 29 使用“测试”服务器 .......... 30 计划资源 .......... 30 达到性能目标 .......... 30 安装 Sybase 产品时的注意事项 .......... 31 检查产品的兼容性 .......... 31 安装或升级 Adaptive Server .......... 31 安装其它第三方软件 .......... 31 配置并测试客户端连接 .......... 32 分配物理资源 .......... 32 专用服务器与共享服务器 .......... 32 决策支持和 OLTP 应用程序 .......... 33 预先的资源计划 .......... 33 操作系统配置 .......... 33 备份和恢复 .......... 34 保留 master 的最新备份 .......... 34 自动备份过程 .......... 35 备份数据库前检验数据一致性 .......... 36 监控日志大小 .......... 36 即时维护和故障排除 .......... 37 启动和停止 Adaptive Server .......... 37 查看和清理错误日志 .......... 37 保留记录 .......... 37 联系信息 .......... 38 配置信息 .......... 38 维护日程 .......... 38 系统信息 .......... 39 灾难性事故恢复计划 .......... 39 其它资源 .......... 39 第 4 章管理和监控 Adaptive Server .......... 41 Sybase Control Center for Adaptive Server .......... 41 Adaptive Server Sybase Central 插件 .......... 42 使用 Adaptive Server 插件 .......... 43 启动和停止 Sybase Central .......... 44 注册 Adaptive Server 插件 .......... 44 执行常见任务 .......... 45 使用 Interactive SQL .......... 51 第 5 章设置配置参数 .......... 53 概述 .......... 53 Adaptive Server 配置文件 .......... 54 修改配置参数 .......... 54 用于修改配置参数的必需角色 .......... 54 使用 sp_configure 的单位规范 .......... 56 全局与会话设置 .......... 56 获取有关配置参数的帮助信息 .......... 57 使用 sp_configure .......... 58 语法元素 .......... 59 将 sp_configure 与配置文件结合使用 .......... 59 参数层次 .......... 63 参数层次中用户定义的子集:显示级别 .......... 65 使用 sp_configure 和 sp_sysmon 进行性能调优 .......... 66 在集群环境中使用配置参数 .......... 66 sp_configure 输出 .......... 67 命名高速缓存配置参数 .......... 69 sysconfigures 和 syscurconfigs .......... 69 查询 syscurconfigs 和 sysconfigures:示例 .......... 70 配置参数 .......... 70 按字母顺序排列的配置参数列 .......... 70 第 6 章磁盘资源问题概述 .......... 257 设备分配和对象放置 .......... 257 用于管理磁盘资源的命令 .......... 258 存储管理决策中需要考虑的事项 .......... 259 恢复 .......... 259 性能 .......... 260 安装时的状态和缺省值 .......... 261 用于管理存储的系统 .......... 261 sysdevices .......... 262 sysusages .......... 263 syssegments .......... 263 sysindexes .......... 264 syspartitions .......... 264 第 7 章管理远程服务器 .......... 265 概述 .......... 265 管理远程服务器 .......... 266 添加远程服务器 .......... 267 管理远程服务器名 .......... 268 设置服务器连接选项 .......... 268 获取有关服务器的信息 .......... 270 删除远程服务器 .......... 270 添加远程登录名 .......... 271 映射用户的服务器 ID .......... 271 将远程登录名映射为特定的本地名 .......... 271 将所有的远程登录名映射到一个本地名 .......... 272 在本地服务器中保留远程登录名 .......... 272 远程用户登录映射的示例 .......... 273 远程用户的口令检查 .......... 274 使用 untrusted 模式的效果 .......... 275 获取有关远程登录的信息 .......... 275 远程登录的配置参数 .......... 276 第 8 章初始化数据库设备 .......... 277 数据库设备 .......... 277 使用 disk init 命令 .......... 278 disk init 语法 .......... 278 指定逻辑设备名 .......... 278 指定物理设备名 .......... 279 选择设备号 .......... 279 指定设备大小 .......... 279 指定 dsync 设置(可选) .......... 281 使用 directio 绕过操作系统缓冲区 .......... 282 disk init 的其它可选参数 .......... 283 获取有关设备的信息 .......... 284 删除设备 .......... 285 指派缺省设备 .......... 286 选择缺省设备和非缺省设备 .......... 286 使用 disk resize 增加设备大小 .......... 287 磁盘空间不足 .......... 288 第 9 章设置数据库选项 .......... 289 使用 sp_dboption 过程 .......... 289 数据库选项说明 .......... 290 查看数据库的选项 .......... 291 用 sysoptions 显示当前设置的开关 .......... 292 第 10 章配置字符集、排序顺序和语言 .......... 295 了解国际化和本地化 .......... 295 国际化系统的优点 .......... 296 国际化系统示例 .......... 296 国际化系统的元素 .......... 299 为服务器选择字符集 .......... 299 Unicode .......... 301 选择服务器缺省字符集 .......... 305 选择排序顺序 .......... 307 使用排序顺序 .......... 308 不同类型的排序顺序 .......... 308 选择缺省排序顺序 .......... 309 为系统消息选择语言 .......... 315 设置服务器:示例 .......... 316 西班牙语版服务器 .......... 316 总部在美国的日本公司 .......... 317 具有多国客户端的日本公司 .......... 317 更改字符集、排序顺序或消息语言 .......... 318 更改缺省字符集 .......... 318 用资源文件更改排序顺序 .......... 319 更改缺省排序顺序 .......... 320 重新配置字符集、排序顺序或消息语言 .......... 320 Unicode 示例 .......... 320 预备步骤 .......... 322 设置用户的缺省语言 .......... 323 重新配置后的恢复 .......... 323 处理可疑分区 .......... 326 安装不支持语言的日期字符串 .......... 327 服务器与客户端之间的日期解释 .......... 328 国际化和本地化文件 .......... 329 国际化文件的类型 .......... 329 字符集目录结构 .......... 329 本地化文件的类型 .......... 330 软件消息目录结构 .......... 331 消息语言和全局变量 .......... 332 第 11 章配置客户端/ 服务器字符集转换 .......... 333 字符集转换 .......... 333 支持的字符集转换 .......... 334 本地字符集的转换 .......... 334 Unicode 系统中的转换 .......... 334 Adaptive Server 直接转换 .......... 335 Unicode 转换 .......... 336 选择转换类型 .......... 337 非 Unicode 客户端/ 服务器系统 .......... 337 Unicode 客户端/ 服务器系统 .......... 338 配置服务器 .......... 339 启用和禁用字符集转换 .......... 339 无法转换的字符 .......... 340 字符集转换中的错误处理 .......... 340 转换和数据长度的变化 .......... 341 配置系统和应用程序 .......... 342 为实用程序指定字符集 .......... 342 显示和文件字符集的命令行选项 .......... 343 第 12 章诊断系统问题 .......... 345 Adaptive Server 如何使用错误消息 .......... 345 错误日志格式 .......... 346 错误消息和消息号 .......... 348 错误消息文本中的变量 .......... 349 Adaptive Server 错误记录 .......... 349 严重级 .......... 350 严重级 10-18 .......... 350 严重级 19-26 .......... 353 报告错误 .......... 355 Backup Server 错误记录 .......... 355 注销进程 .......... 356 仅将注销用于状态 .......... 359 使用 sp_lock 检查阻塞进程 .......... 360 管家功能 .......... 360 管家清洗 .......... 361 管家杂事 .......... 361 管家碎片收集 .......... 361 配置 enable housekeeper GC .......... 362 关闭服务器 .......... 363 关闭 Adaptive Server .......... 363 关闭 Backup Server .......... 364 了解已知的问题 .......... 365 索引 ..........367
介绍 Log Explorer主要用于对MSSQLServer的事物分析和数据恢复。你可以浏览日志、导出数据、恢复被修改或者删除的数据(包括执行过update,delete,drop和truncate语句的格)。一旦由于系统故障或者人为因素导致数据丢失,它能够提供在线快速的数据恢复,最大程度上保证恢复期间的其他事物不间断执行。 他可以支持SQLServer7.0和SQLServer2000,提取标准数据库的日志文件或者备份文件中的信息。 其中提供两个强大的工具:日志分析浏览,对象恢复。具体功能如下: l 日志文件浏览 l 数据库变更审查 l 计划和授权变更审查 l 将日志记录导出到文件或者数据库 l 实时监控数据库事物 l 计算并统计负荷 l 通过有选择性的取消或者重做事物来恢复数据 l 恢复被截断或者删除中的数据 l 运行SQL脚本 产品 LogExplore包含两部分 l 客户端软件 l 服务器代理 服务器端代理是保存在SQLServer主机中的一个只读存储过程,他的作用是接受客户端请求,读取在线事物日志块并通过网络传给客户端软件,由客户端软件来读取这些原始的数据块来完成Log Explore所提供的所有功能。 他依赖来的网络协议包括: l Named Pipe:局域网中适用 l Tcp/Ip:广域网中适用 数据库相关介绍 事物日志(Transaction Log) SQLServer的每个数据库都包含事物日志,它以文件的形式存储,可以记录数据库的任何变化。发生故障时SQLServer就是通过它来保证数据的完整性。 操作(Operation) 操作是数据库中定义的"原子行为",每个操作都在日志文件中保存为一条记录。它可以是用户直接输入的SQL语句,比如标准的insert命令,日志文件中便会记录一条操作代码来标志这个insert操作。 事物(Transaction) 事物是一系列操作组成的序列。他可以理解为直观的不可分割的一笔业务,可以执行成功或者失败。典型的事物比如由应用程序发出的具有开启-提交功能的一组SQL语句。不同的事物靠事物Id号(transaction ID)来区分,具有相同ID的事物记录的日志也相同。 在线事物日志(Online Transaction Log) 在线事物日志是指当前活动数据库所用的日志。可以通过如下命令来确定其对应文件 Select * from SYSFILES 他的文件后缀名一般是.LDF 离线事物日志(Offline Transaction Log) 离线事物日志是指非活动数据库所用的日志。当其数据库处于关闭(ShutDown)才状态下可以进行复制备份操作。他的结果同在线事物日志完全相同。 备份文件 备份文件是保存食物日志备份的文件,通常管理员通过运行SQL语句或者企业管理器来生成该文件。备份文件的内部结构和事物日志不同,他采用称为MTF的格式来保存数据。一个备份文件可以包含一个日志的多组备份,甚至包括多个数据库的混合备份. 设置为自动收缩 企业管理器--服务器--右键数据库--属性--选项--选择"自动收缩" 强烈要求该项不要选中.否则SQLServer将已循环的方式来覆盖先前的日志记录,将会导致LogExplore无法恢复错误. 数据恢复介绍 LogExplore允许你恢复应为误操作或者程序错误而导致的数据丢失或者更改.比如执行update/Delete语句时丢失了where子句,或者错误使用了Dts功能. LogExplore不支持直接修改数据库.他可以生成事物的逆操作脚本. 如果log是delete table where ...的话,生成的文件代码就是insert table .... 你可以通过SQL查询分析器,或者LogExplore的Run SQL Script功能来执行生成脚本. 关于Undo Undo功能可以逆操作一组指定的用户事物。包括insert,delete和update,其局限性如下: l 事物类别:LogExplore只能undo用户事物。用户事物是指在用户上定义的事物,不支持系统的更新恢复。同时,他也不支持计划变更的回滚。 l Blob类型:包括text,ntext,image类型。LogExplore只支持这些类型的insert和delete恢复,不支持update语句恢复。 关于redo Redo功能可以再次运行一组指定事物。它可以在以下情况中用到: 丢失数据库而且没有任何备份文件。 l 如果原始日志文件没有丢失可以通过Redo来实现恢复。 l 通过完整备份文件来把数据库恢复到某指定时间点,再通过redo功能完整恢复。它可以重放Create Table和Create Index命令,来重新生成被删掉的,同时也受blob字段的限制。 拯救Dropped/Truncate命令导致的数据丢失 执行Drop Table和Truncate Table命令虽然会被SQLServer记录到日志文件中,但是并不记录被删除的数据。你可以使用LogExplore提供的功能来恢复这些数据。LogExplore提供两种机制来恢复被Drop或者Truncate的数据。 1、如果你有备份文件可以直接通过备份文件恢复。 2、通过LogExplore提供的方法来恢复。 当执行如上命令时,SQLServer会将保存数据的页面放入空闲页面列中。如果此页没有被再次使用则将一直保存原始数据。恢复时,LogExplore将从空闲页面列中搜寻没有被再次使用的页面,然后生成一个SQL脚本来从这些页面重组原始数据。LogExplore可以确定被删掉的原始数据行,并在完成时显示原始行数和实际恢复的行数,由此可以断定是否全部恢复。 SQL逆操作 1、Insert--Delete 2、Delete--Insert 3、Update 注意:如果你选中了'Do not restore column values that have been changed by subsequent modifications'项,只对事物1逆转将不会产生任何结果。 自增序列(IDENTITY Property) 如果被删除数据与有IDENTITY Property属性,恢复时LogExlpore可以通过SET IDENTITY_INSERT ON 命令来对插入的数据设置Identity属性,并保留原数据不变,也可以对该列付与新值。 数据导出: 浏览日志时可将数据导出为xml,html,或者其他有分隔符的文件.也可以指定到一个SQL的中. 操作指南 Attaching to a Log:在所有操作之前必须添加日志文件, l 可以用普通的SQL登录方式添加在线日志(Online Log), l 直接选择LDF文件来添加离线日志(OffLine Log) l 添加备份文件 登录之后界 功能介绍: 1、 Log Summary 日志文件的概要信息。 2、 Load Analysis 列出指定时间范围内的一些事物,用户和载入的概要信息。 3、 Filter Log Record 日志过滤设置。支持过滤条件包括:时间、操作类型、、用户、SPID、搜索深度、Dropped项以及登录设置和应用程序设置 4、Browse 日志浏览,核心模块。 1、 View Log功能: 列如图,可以用TransID来区分事物并用不同颜色标识。工具栏的按钮是一些基本查询操作。鼠标右键弹出菜单中有Undo Transaction和UndoOperation可以恢复黑色箭头选中的事物或者操作项。 Real-Time Monitor: 实时监控事物日志,通过轮询来实现。可以暂停或者停止监控,可以更改轮询周期。 相关DML语言和DDL语言可以在Row Revision History、Row Transaction History以及View DDL Commands来查询。 2、 Export Log Report 包括Export To SQL和Export To File,根据向导即可完成。 3、 其余菜单:Undo,Redo,Salvage Dropped/Truncated data,Restore 以及Run SQL Script前面已经叙述过,可以根据其向导完成。 log explorer使用的几个问题 1)对数据库做了完全 差异 和日志备份 备份时选用了删除事务日志中不活动的条目 再用Log explorer打试图看日志时 提示No log recorders found that match the filter,would you like to view unfiltered data 选择yes 就看不到刚才的记录了 如果不选用了删除事务日志中不活动的条目 再用Log explorer打试图看日志时,就能看到原来的日志 2)修改了其中一个中的部分数据,此时用Log explorer看日志,可以作日志恢复 3)然后恢复备份,(注意:恢复是断开log explorer与数据库的连接,或连接到其他数据上, 否则会出现数据库正在使用无法恢复) 恢复完后,再打开log explorer 提示No log recorders found that match the filter,would you like to view unfiltered data 选择yes 就看不到刚才在2中修改的日志记录,所以无法做恢复. 3) 不要用SQL的备份功能备份,搞不好你的日志就破坏了. 正确的备份方法是: 停止SQL服务,复制数据文件及日志文件进行文件备份. 然后启动SQL服务,用log explorer恢复数据 请注意如果数据库采用简单日志,Log Explorer就没用了。 Log Explorer For SQL SERVER帮助翻译(Log Operation Codes) 日志操作代码 每个日志记录包含一个操作代码,操作代码示日志的操作 FORMAT_PAGE 写新分配数据页的头 INSET_ROWS 在用户系统插入行 DELETE_ROWS 从里删除行 MODIFY_ROW 使用Update命令更新行 MODIFY_HEADER SQLSERVER分配新数据页,初始化页头 MODIFY_COLUMNS 使用Update命令更新行 DELTA_SYSIND SYSINDEXES系统被修改 DELETE_SPLIT 行移动到新物理页,并从原物理页删除这些行 FILE_HDR_MODIF SQLSERVER增长数据文件大小 BEGIN_XACT 启动一个事务 COMMIT_XACT 提交一个事务 ABORT_XACT 回滚一个事务 MARK_SAVEPOINT 程序发布'SAVE TRANSACTION'命令 MARK_DLL 结构被修改 BEGIN_CKPT 启动一个检查点 XACT_CKPT 在执行检查点时打开事务 END_CKPT 执行完检查点 SORT_BEGIN 创建索引时执行排序 SORT_END 创建索引时排序完成 CREATE_INDEX 创建一个索引 DROP_INDEX 删除一个索引

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧