Sql Server数据库由于未知原因丢失的恢复方法

故障描述:

5块2T硬盘组建RAID5,划分LUN供windows服务器使用。在windows服务器内装有Sql Server2008数据库。存储空间内共有三个逻辑分区,大小分别为500G、800G、2.3T。数据库文件丢失,主要涉及五个数据库,表个数约为6000个左右。丢失原因未知,且不能确定数据存储位置。三个数据库的大小分别为8G、15G、20G。在文件丢失后服务器仍处于开机状态,但并未写入大量数据。

初检流程:

1、使用RAID信息及内部数据块信息重组RAID。

重组RAID
2、提取LUN内三个分区镜像。
3、扫描文件系统内丢失文件,未找到被删除数据库文件。
4、初检结果为数据库文件丢失,通过文件系统角度无法恢复。

恢复流程:

1、制定恢复方案。在数据库文件被删除且判定为无法恢复文件后,只能通过扫描数据页,并提取页内记录的方式进行恢复。
2、使用北亚自主编数据页扫描程序扫描分区内数据页并提取。在分别扫描两个分区镜像后发现500G系统盘内数据页数量极少且数据页断裂情况严重,另一分区内扫描到数据页个数较多。暂定此分区为数据库文件存储空间。

扫描数据页
3、重组系统表。Sql Server数据库使用系统表来管理所有用户表,在这些系统表内记录了各表的列数、数据类型及约束信息等。解析系统表过程中发现提取出的数据页内系统表损坏,无法正常读取信息。在与客户沟通后得知有备份文件,且备份完成后没有大量改动表结构,系统表可用。
4、还原备份。

还原备份
5、分别提取三个库中各表表结构信息

提取表结构信息
6、解析表结构脚本。将各表的列信息存入数据库内便于后续使用。

扫描脚本文件

表结构信息存入数据库
7、解析系统表获取用户表id信息、关联表结构与数据页。(为保护客户隐私,后续步骤涉及用户表表名及数据页内数据部分均未截图)
8、新建数据库,使用北亚自主编写软件解析记录并导入到恢复环境内。
9、整理恢复结果。在此分区内除数据库文件外还存有备份文件若干,所以在导出记录后可能存在重复数据,必须去重。编写SQL存储过程进行去重。

数据库去重
10、客户验证数据。客户在查验过数据后表示数据可以接受,移交数据到客户存储设备,恢复成功。

原文地址:http://blog.51cto.com/sun510/2298801

时间: 2024-10-09 22:36:54

Sql Server数据库由于未知原因丢失的恢复方法的相关文章

sql server 数据库变成单用户模式的恢复

USE master;GODECLARE @SQL VARCHAR(MAX);SET @SQL=''SELECT @[email protected]+'; KILL '+RTRIM(SPID)FROM master..sysprocessesWHERE dbid=DB_ID('ty_active_log_gz'); EXEC(@SQL); GO ALTER DATABASE ty_active_log_gz SET MULTI_USER;

SQL Server 数据库查找重复记录的几种方法

http://www.hanyu123.cn/html/c61/6790.html 一.查某一列(或多列)的重复值.(只可以查出重复记录的值,不能查出整个记录的信息) 例如:查找stuid,stuname重复的记录: select stuid,stuname from stuinfo group by stuid,stuname having(count(*))>1 二.查某一列有重复值的记录.(此方法查出的是所有重复的记录,如果有两条记录重复的,就查出两条) 例如:查找stuid重复的记录:

MS SQL Server数据库修复/MDF数据文件数据恢复/MDF质疑/mdf无法附加

微软的SQL Server 数据库最常用的有两种类型的文件: 1.主要数据文件,文件后缀一般是.MDF: 2.事务日志文件,文件后缀一般是.LDF. 用户数据表.视图.存储过程等等数据,都是存放在MDF文件里,LDF文件是存放MS SQL Server操作过程中的日志记录. MDF文件必读附加到MS SQL Server数据库环境后,才能正常读取其中的数据.当由于某种原因数据库附加不上,MDF数据库文件的内容就没办法读取,修复的方法有两种: 1. 使用MS SQL Server环境进行修复,先以

sql server 2000,Log.LDF文件丢失,附加数据库失败的解决办法[转]

SQL Server数据库备份有两种方式,一种是使用BACKUP DATABASE将数据库文件备份出去,另外一种就是直接拷贝数据库文件mdf和日志文件ldf的方式.下面将主要讨论一下后者的备份与恢复.本文假定您能熟练使用SQL Server Enterprise Manager(SQL Server企业管理器)和SQL Server Quwey Analyser(SQL Server查询分析器) 1.正常的备份.恢复方式 正常方式下,我们要备份一个数据库,首先要先将该数据库从运行的数据服务器中断

SQL Server数据库查询速度慢的原因和解决方法

问 SQL Server数据库查询速度慢的原因有很多,常见的有以下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列导致查询不优化. 4.内存不足 5.网络速度慢 6.查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) 7.锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷) 8.sp_lock,sp_who,活动的用户查看,原因是读写竞争资源. 9.返回了不必要的行和列 10.查询语句不好,没

SQL Server数据库性能优化之SQL语句篇(转载)

SQL Server数据库性能优化之SQL语句篇 原文地址:http://www.blogjava.net/allen-zhe/archive/2010/07/23/326927.html 期项目需要,做了一段时间的SQL Server性能优化,遇到了一些问题,也积累了一些经验,现总结一下,与君共享.SQL Server性能优化涉及到许多方面,如良好的系统和数据库设计,优质的SQL编写,合适的数据表索引设计,甚至各种硬件因素:网络性能.服务器的性能.操作系统的性能,甚至网卡.交换机等.这篇文章主

你所不知道的SQL Server数据库启动过程(用户数据库加载过程的疑难杂症)

前言 本篇主要是上一篇文章的补充篇,上一篇我们介绍了SQL Server服务启动过程所遇到的一些问题和解决方法,可点击查看,我们此篇主要介绍的是SQL Server启动过程中关于用户数据库加载的流程,并且根据加载过程中所遇到的一系列问题提供解决方案. 其实SQL Server作为微软的一款优秀RDBMS,它启动的过程中,本身所带的那些系统库发生问题的情况相对还是很少的,我们在平常使用中,出问题的大部分集中于我们自己建立的用户数据库. 而且,相对于侧重面而言,其实我们更关注的是我们自己建立的用户数

《SQL Server企业级平台管理实践》读书笔记——关于SQL Server数据库的备份方式

数据备份一直被认为数据库的生命,也就是一个DBA所要掌握的主要技能之一,本篇就是介绍SQL Server备份原则,SQL Server数据库分为数据文件和日志文件.为了使得数据库能够恢复一致点,备份不仅需要拷贝数据数据文件里的内容,还要拷贝日志文件里的内容.那么根据每次备份的目标不同,我们可以将备份分为数据备份和日志备份. 数据备份的范围可以是完整的数据库.部分数据库.一组文件或文件组.所以根据备份下来的数据文件的范围,又分为了完整数据库备份.文件备份和部分备份. 完整数据库备份 完整数据库备份

MS Sql Server 数据库或表修复

提示数据库处于恢复模式时重建日志文件可以解决 DBCC REBUILD_LOG('db_name','c:\mssql7\data\dbxxx_3.LDF') MS Sql Server 提供了很多数据库修复的命令,当数据库质疑或是有的无法完成读取时可以尝试这些修复命令. 1. DBCC CHECKDB  重启服务器后,在没有进行任何操作的情况下,在SQL查询分析器中执行以下SQL进行数据库的修复,修复数据库存在的一致性错误与分配错误. use master declare @databasen