SQL Server数据库在新建的时候除了生成“数据库名_Data.MDF”的数据文件外,还会生成“数据库名_LOG.LDF”文件。当我们错误地删除数据库里系统表的信息导致无法正常使用或者错误地删除有用数据需要回滚的时候,我们应该如何做呢?系统表的威胁比较大些,因为一旦删除依靠SQL Server本身的企业管理器、查询分析器等将无法使用。底层的API或者DLL驱动都需要进行身份权限的验证。暂时从MDF文件本身,因为无法获取更多的关于文件头标志的定义,如果能知道数据在物理上的存储,完全可以不做验证,直接定位到记录块进行添加数据。但目前还没找到更为有效的方式,毕竟这是款商业软件,只能通过所提供的透明方式进行使用。
网上很多的资料对删除系统用户表重要用户的操作方法都不切合实际。因为你已经没有权限进行任何操作了。各样的插入语句已经失去了价值。而这只能依靠没有重新启动SQL Server前还在内存驻留期间进行插入。因此为了保护你的数据,我建议列位,定期备份好重要数据,对于数据量比较大的至少应该保留一周的有效的备份。
现在,在一位朋友帮助下,我们可以使用一款商业软件Log Explorer进行分析日志然后用其生成可进行重新操作的SQL脚本或者撤消回滚的脚本。但需要注意,错误的操作你需要从脚本中剔除,你一定要格外地慎重每一个DELETE FROM语句。对于错误删除系统表的一般在文件末尾。你可能删除sysusers的某个记录,但是与其连接的相关子表的记录也会删除。一定要格外仔细地进行遴选把危险的语句剔除干净。
这款软件安装非常简单。在安装过程中需要输入序列号进行继续安装。安装完成后,我们从程序组找到Log Explorer进行启动。
进入启动界面如图1,首先点左边导航的Attach Log File(绑定日志文件),会在右边出现登陆窗口,主要是设置一下SQL Server服务器的连接参数,SQL Server栏选择服务器名称一般会自动列出,Use Windows Authentication(使用Windows身份验证)不选将使用SQL Server自身的验证方式,Login Name(SQL Server管理帐户名称默认为sa),Password(SQL Server管理帐户密码),确认无误后,按Connect进行连接。
登陆成功将出现图2的界面,选择绑定的日志文件(支持格式bak、trn、ldf)。bak是从备份文件中提取一般意义不大。我们使用Use Backup File(使用备份文件)不用Use On-Line Log(使用联机日志)。使用联机日志对Database Name(数据库名)列表中的数据库有效将获取这些数据库的日志以便于进行统计分析。而我们这里使用本地的脱离SQL Server的LDF文件,不依赖于SQL Server服务器,如果出现在SQL Server服务的节点上则需要分离,否则将发生错误。通过“Select Backup Files”旁的省略号浏览按纽开始添加文件,可以添加多个文件,如果是增量备份,请保证按时间顺序进行添加,否则生成的SQL脚本将会可能会发生错误。确认无误后,按Attach(绑定)进入图三的界面。
我们需要过日志文件进行过滤参数设置。假设在N天前进行了备份,那么我们的开始时间需要重新设定为备份的时间。如果我们需要把出故障时一小时内的操作予以撤消,那么结束的时间需要提前。还可以根据不同的操作进行多样过滤,设置完成后点Apply(应用)。
在图四的Recovery(回复)节中选Redo User Transactions(重做用户事务)将在用户新的数据库或备份的数据库上重新执行操作以便与当前的有选择的操作保持一致,而上面的Undo User Transactions(撤消用户操作)实质上相当于事务回滚将一段时间内的操作有选择地进行回滚。一般我们需要另外设置SQL脚本的保存路径。在图4的界面中,Stop On Error一般需要去掉(发生错误停止),Include text、ntext、image data(包含文本、长文本、图象等二进制数据)、Retain Identity Values(保留识别号尤其是增量种子)、Include transactions for all tables that no longer exist in the database schema(包含所有不存在于数据库模式中的表)。
软件下载:使用Log Explorer恢复SQL Server数据
操作手册翻译:
第一部分 简介
管理Microsoft SQL Server是非常耗费时间的任务;恢复数据是非常重要却又极其艰巨的任务。Lumigent Log Explorer产品帮助你解决这些难题。
什么是Log Explorer?
Log Explorer是一款主流的针对Microsoft SQL Server进行集事务分析与数据恢复于一体的整体解决方案。通过提供独立的SQL Server事务日志访问方式,Log Explorer可以解析并可以解决大多数据库问题,通过
l 浏览事务日志
l 导出数据用于生成报表
l 有选择性进行恢复修改、删除、丢失、冲突的数据
应用BUG与用户误操作会损坏你的数据让你的商务遭受损失。快速定位与恢复由错误带来的损失对你的商务尤为重要。Log Explorer可以联机数据修复还原Microsoft SQL Server数据库避免运用耗时耗力的技术。另外值得补充的是,最终恢复的程度每一次成功的事务操作在恢复过程中不会被丢失。
Log Explorer领航数据库管理员在产品环境中的管理、提供完全的日志浏览、强大的数据恢复、数据表还原、数据导出等特性。
Log Explorer做什么?
Log Explorer提供三个关键的功能:
l 强大的浏览数据活动交互访问记录功能。
l 安全可靠的选择性的数据恢复。
l 过滤式的日志文件导出。
浏览事务日志
使用强大的快速了解应用行为的浏览能力:
l 浏览事务日志(联机、备份的SQL Server数据库日志)
l 过滤日志,提供自定义视图
l 根据时间、类型、表、用户名、SPID以及其他细节来选择事务
l 检查所有的数据库事务、操作信息包括DDL命令、会话登陆信息
l 查看指定表或指定行的所有修改信息。
l 查看用户与系统表的交互记录。
l 根据绑定日志进行分析统计
l 根据绑定日志进行观察事务
选择性数据恢复
使用灵活的数据恢复功能,轻而易举地恢复因数据丢失或损坏造成的损失。
l 回滚指定表指定时间
l 回滚单独的行排除指定表指定时间
l 撤消事务、接连后继的事务以及单个操作。
l 递归一系列删除操作
l 重做一系列事务
l 从丢失或冲突的表中恢复数据
恢复功能使用基于日志的回滚与重做方式。没有使用附加的传统技术通过备份与日志还原数据库。
恢复是有选择性的。它只修复你设定条件后的这些事务,避免损失与不必要的开销。
最后,恢复功能是安全的。Log Explorer生成安全的SQL脚本来撤消不良的事务操作或恢复损失的数据。你可以在应用到活动数据库前重新查看并核实这些脚本。
数据导出
使用灵活的数据导出功能可以将选择的日志生成如下格式:
l XML、HTML或其他字符分隔的文件类型
l SQL Server表
使用导出的数据可以通过第三方工具或者自定义报表生成器生成多样的报表。
为什么用Log Explorer?
Log Explorer功能强大的事务分析能力与数据恢复能力让数据库管理员、系统管理员、应用开发人员、QA工程师、IT专业人士、公司数据核查员获得很大的收益。
l 理解你的应用与SQL Server的内部的行为
l 大大缩短数据恢复的时间
l 大大减少系统瘫痪的时间
l 还原丢失或损坏的数据
l 有选择性地完全修复所选对象(不使用任何无关的数据事务)
l 提供丰富的修复级别
l 快速地查找应用与用户错误。
l 识别应用行为
l 监测系统变化
l 缩短测试周期
l 分析事务的表现特性
l 提高软件质量
因为Log Explorer使用本地数据库服务器管理的事务日志,不需要更多的运行时间开销。不像,使用比较麻烦的基于触发器的解决方案,应用与数据模式的改变都需要重新生成。而Log Explorer操作对服务器不会造成任何影响也不需要进行额外的维护。
Log Explorer如何工作?
Log Explorer使用客户端组件与服务器端组件。服务器端组件简单地访问事务日志并向客户端组件提供可用的日志信息。客户端组件解释过滤串、分析并向用户展现日志信息。需要补充的是客户端组件还要根据选择生成用于还原的SQL脚本与导出数据到文件或SQL数据表中。
图1 登陆窗口
图2 选择备份日志文件
图3 设置过滤参数
图4 生成重做用户事务的SQL脚本





附件只是为了学习交流使用.如果需要商业使用,请购买正版.