找回密码
 注册账号

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

初学者课程:T3自学|T6自学|U8自学软件下载课件下载工具下载资料:通资料|U8资料|NC|培训|年结积分规则 | 使用常见问题Q&A
知识库:U8 | | NC | U9 | OA | 政务U8|U9|NCC|NC65|NC65客开|NCC客开新手必读 | 任务 | 快速增金币用友QQ群[微信群]
查看: 21977|回复: 84

SQL-Server 灾难恢复一例

[复制链接]
发表于 2006-12-31 22:35:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册账号

×
故障现象

数据库可以使用,可以备份,但对备份进行恢复时报错,使用sp_attach_db对两个物理文件进行连接时,报同样错误:
服务器: 消息 605,级别 21,状态 1,行 1
试图从数据库 ‘UFData_001_2003' 中提取的逻辑页 (1:10720) 属于对象 '0',而非对象 'syscolumns'。
连接中断
注:严重级别 21:数据库 (dbid) 进程中的 SQL Server 严重错误
这些消息表明遇到了影响当前数据库中所有进程的问题;但数据库本身损坏的可能性不大


错误分析

针对报的错误,数据有恢复的可能性
错误可能syscolumns这个系统表存储页受到了破坏,恢复的关键在于正确修复这个表

恢复步骤1-连接数据库
一、 建立一个同名的新数据库,方法同建账
二、 停止SQL Server服务,删除新数据库的两个文件,把备份中的ufdata.mdf COPY到相应的文件夹下
三、 启动SQL Server服务,运行SQL脚本,置数据库为紧急状态(emergency mode)
四、 重启SQL Server服务,重建LDF文件
连接成功!
五、 运行SQL脚本,置数据库为紧急状态
sp_configure 'allow updates', 1 --指定可以直接更新系统表
go
reconfigure with override --如果配置不需要重启服务,则配置值直接
go --改运行值
use master
go
update sysdatabases set status = 32768 --该参数为置为紧急状态
where name = 'ufdata_003_2003'
go
sp_configure 'allow updates', 0
go
reconfigure with override

恢复步骤1-连接数据库 脚本2

重建LDF文件
dbcc rebuild_log( 'ufdata_001_2003', 'E:\U8SOFT\ZT001\2003\ufdata.ldf')
注:之前必须重启SQL Server 服务

恢复步骤2-修复系统表

一、确定错误表 syscolumns
运行 select * from syscolumns
报错同前报错-->确定错误根源

二、运行DBCC修复

恢复步骤2-修复系统表-脚本1
sp_dboption 'ufdata_002_2003','SINGLE USER', TRUE
go
DBCC CHECKTABLE ('syscolumns',REPAIR_REBUILD )
go
sp_dboption 'ufdata_002_2003', 'SINGLE USER', FALSE
go

部分错误信息:
CHECKTABLE 发现了 0 个分配错误和 3 个一致性错误(在表 'syscolumns' 中,该表的对象 ID 为 3)。
repair_allow_data_loss 是最低的修复级别(对于由 DBCC CHECKTABLE (UFDATA_002_2003.dbo.syscolumns repair_rebuild) 发现的错误而言)。

恢复步骤2-修复系统表-脚本2
更高级别的修复方式 sp_dboption
'ufdata_003_2003','SINGLE USER', TRUE
go
DBCC CHECKTABLE ('syscolumns',REPAIR_ALLOW_DATA_LOSS )
go
sp_dboption 'ufdata_003_2003', 'SINGLE USER', FALSE
go
运行结果显示,错误已经修复 成功!!!

[ 本帖最后由 xwencai 于 2008-5-9 21:37 编辑 ]

评分

参与人数 1威望 +1 金币 +1 魅力 +1 收起 理由
清纯 + 1 + 1 + 1 因资料不是很新(2005年或更早时间的), ...

查看全部评分

发表于 2024-2-1 16:33:55 | 显示全部楼层
谢谢,上次的视频非常不错
回复 点赞 拍砖

使用道具 举报

  • 打卡等级:无名新人
  • 打卡总天数:2
  • 打卡月天数:0
  • 打卡总奖励:3
  • 最近打卡:2024-10-22 09:08:08
发表于 2023-12-6 10:13:32 | 显示全部楼层
高手,我有你这水平就好了
回复 点赞 拍砖

使用道具 举报

发表于 2023-12-5 17:54:32 | 显示全部楼层
资料非常有用,顶顶顶
回复 点赞 拍砖

使用道具 举报

发表于 2024-1-21 21:10:48 | 显示全部楼层
借楼赚金币
回复 点赞 拍砖

使用道具 举报

发表于 2024-1-4 15:34:08 | 显示全部楼层
学习,赚金币
回复 点赞 拍砖

使用道具 举报

发表于 2007-1-10 11:03:22 | 显示全部楼层
果然是高手,真的应该好好学学
发表于 2007-3-13 15:26:40 | 显示全部楼层
太深了,佩服!!!!!!!!!!!!!!!!!!!!!!!!!!!!
发表于 2007-3-13 17:05:37 | 显示全部楼层
不错,有实用价值的东东
  • 打卡等级:即来则安
  • 打卡总天数:75
  • 打卡月天数:18
  • 打卡总奖励:245
  • 最近打卡:2024-12-21 08:17:34
发表于 2007-3-30 22:59:33 | 显示全部楼层
果然是高手,真的应该好好学学
发表于 2007-4-1 19:56:29 | 显示全部楼层
我明白了,看来还要学习
发表于 2007-4-22 17:35:53 | 显示全部楼层
果然是高手,真的应该好好学学
发表于 2007-4-22 22:48:23 | 显示全部楼层
不懂啊~~~~~~~`
发表于 2007-4-26 16:07:21 | 显示全部楼层
还可以吧    俺算是复习一下  
发表于 2007-6-6 13:39:28 | 显示全部楼层
虽然不怎么看得懂,还是谢啦。。
发表于 2007-6-7 22:24:26 | 显示全部楼层
我觉得先要明白引起瘫痪的原因,然后在说这些!!
发表于 2007-7-10 19:18:03 | 显示全部楼层
虽然用不上,还是顶一下
发表于 2007-7-18 10:55:16 | 显示全部楼层
很好很实用,支持一下。。。
  • 打卡等级:即来则安
  • 打卡总天数:75
  • 打卡月天数:18
  • 打卡总奖励:245
  • 最近打卡:2024-12-21 08:17:34
发表于 2007-8-6 18:27:38 | 显示全部楼层
支持一下!支持一下!
支持一下!支持一下!
发表于 2007-8-7 08:23:07 | 显示全部楼层
果然是高手,加强学习
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|站长微信|Archiver|手机版|小黑屋|用友之家 ( 蜀ICP备07505338号|51072502110008 )

GMT+8, 2024-12-22 13:04 , Processed in 0.078228 second(s), 14 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表