SQL Server误删表查看
SQL Server误删表查看
转自:http://blog.51cto.com/aimax/2134572
SQL Server 完全恢复模式 下恢复误删除的表,进行 精准 恢复
1. 找出被删除的表名(无schema,需要从日志中分析进行提取,后续完善)、object_id、表所在数据库、删除人、删除时间等
- declare @database_name varchar(200),@type varchar(2),@pass_hours int,
- select @database_name='AdventureWorks2014',@pass_hours=-48
- declare @file_path sql_variant
- select @file_path=value from fn_trace_getinfo(0) where property=2 and traceid=1
- SELECT max(gt.HostName) as 'LoginHostName'
- ,max(gt.ApplicationName) as 'ApplicationName'
- ,max(gt.LoginName) as 'LoginName'
- ,min(gt.StartTime) as 'MinStartTime'
- ,max(gt.StartTime) as 'MaxStartTime'
- ,gt.ObjectID
- ,max(gt.ServerName) as 'DBServerName'
- ,max(gt.ObjectName) as 'ObjectName'
- ,max(gt.DatabaseName) as 'DatabaseName'
- ,max(sv.subclass_name) as 'subclass_name'
- ,max(e.name) as 'OperationType'
- FROM fn_trace_gettable(convert(varchar(2000),@file_path), DEFAULT) gt
- LEFT JOIN sys.trace_subclass_values sv
- ON gt.[eventclass] = sv.[trace_event_id] AND sv.[subclass_value] = gt.[objecttype]
- INNER JOIN sys.trace_events e
- ON gt.[eventclass] = e.[trace_event_id]
- INNER JOIN sys.trace_categories c
- ON e.[category_id] = c.[category_id]
- WHERE StartTime>=dateadd(HOUR,@pass_hours,getdate()) and StartTime<=getdate()
- and [eventclass]=47 --drop talbe/index
- and databasename=@database_name
- and subclass_name='U'
- group by gt.ObjectID
2. 通过删除时间确定相关信息被记录在哪个日志文件上
- select * from msdb.dbo.backupmediafamily where media_set_id=(
- select top 1 media_set_id from msdb.dbo.backupset
- where database_name=@database_name
- and backup_finish_date>=@max_start_time
- and type='L' order by backup_finish_date)
3. 从日志文件提取lsn相关信息
- declare @lockinfo varchar(100)
- set @lockinfo='%SCH_M OBJECT%:'+@ObjectID+':%'
- select [Transaction id],'lsn:0x'+[Current LSN]
- from fn_dump_dblog (
- NULL, NULL, N'DISK', 1, @backupfile,
- DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
- DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
- DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
- DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
- DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
- DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
- DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
- DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
- DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT) as a
- where convert(datetime,[Begin Time])
- between dateadd(ss,-5,@min_start_time) and dateadd(ss,5,@max_start_time)
- and [Transaction Name]='DROPOBJ'
- and exists(select 1 from fn_dump_dblog (
- NULL, NULL, N'DISK', 1, @backupfile,
- DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
- DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
- DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
- DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
- DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
- DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
- DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
- DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
- DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT)
- where [Transaction id]=a.[Transaction id] and [Lock Information] like @lockinfo)
4. 恢复所需相关信息
5. 邮件显示
6. 恢复语句(最后执行的一句)
Restore log DBName from disk='xxx' with stopbeforemark='xxx'
SQL Server误删表查看的更多相关文章
- SQL Server 用SSMS查看依赖关系有时候不准确,改用代码查
SQL Server 用SSMS查看依赖关系有时候不准确,明明某个sp中有用到表tohen,查看表tohen的依赖关系的时候,却看不到这个sp 用代码查看方式如下: --依赖于表tohen的对象 SE ...
- 千万级SQL Server数据库表分区的实现
千万级SQL Server数据库表分区的实现 2010-09-10 13:37 佚名 数据库 字号:T | T 一般在千万级的数据压力下,分区是一种比较好的提升性能方法.本文将介绍SQL Server ...
- SQL Server 锁表、查询被锁表、解锁相关语句
SQL Server 锁表.查询被锁表.解锁相关语句,供参考. --锁表(其它事务不能读.更新.删除) BEGIN TRAN SELECT * FROM <表名> WITH(TABLOCK ...
- SQL Server系统表sysobjects介绍与使用(转)
SQL Server系统表sysobjects介绍与使用 关于SQL Server数据库的一切信息都保存在它的系统表格里.我怀疑你是否花过比较多的时间来检查系统表格,因为你总是忙于用户表格.但是,你可 ...
- SQL Server 创建表分区
原文:SQL Server 创建表分区 先准备测试表 CREATE TABLE [dbo].[Employee] ( EmployeeNo ,) PRIMARY KEY, EmployeeName ) ...
- EF Core中,通过实体类向SQL Server数据库表中插入数据后,实体对象是如何得到数据库表中的默认值的
我们使用EF Core的实体类向SQL Server数据库表中插入数据后,如果数据库表中有自增列或默认值列,那么EF Core的实体对象也会返回插入到数据库表中的默认值. 下面我们通过例子来展示,EF ...
- SQL Server系统表介绍与使用
关于SQL Server数据库的一切信息都保存在它的系统表格里.我怀疑你是否花过比较多的时间来检查系统表格,因为你总是忙于用户表格.但是,你可能需要偶尔做一点不同寻常的事,例如数据库所有的触发器.你可 ...
- SQL Server创建表超出行最大限制解决方法
问题的现象在创建表A的时候,出现“信息 511,级别 16,状态 1,第 5 行 无法创建大小为 的行,该值大于允许的最大值 8060.”的信息提示.很奇怪,网上查了一下,是因为要插入表的数据类型的 ...
- SQL Server 修改表结构(转载)
SQL Server 修改表结构 本文链接:https://blog.csdn.net/petezh/article/details/81744374 查看指定表结构 exec sp_help Rep ...
随机推荐
- Linux下(centos6.8)JDK1.8的安装与配置
今天说下在Linux(centos6.8)系统下的JDK安装与配置. 据我所知的jdk安装方式有三种(rpm.yum方式没用过,暂且不提)今天只说解压安装方式: 一.解压jdk安装包: 附上jdk1. ...
- sql语句单据编号生成防并发
有用户反馈说发现重复单据号,检查发现以下单据号被分配给了不同的两个职工 系统中使用语句exec GetNewOrderNumber 'pwgnumber','PWG',1, @pwg_number o ...
- libevent源码学习_event结构体
在libevent中最重要的结构体莫过于event和event_base了,下面对于这2个结构体进行分析. 1.结构体event,位于:event.h struct event { /* * 双向链表 ...
- redhat samba安装配置
突然想要用,好久没配过这玩意了,再次配置一次,记录一下过程. 1.挂载镜像 mount -o loop ~/Desktop/RHEL_5.5\ i386\ DV.iso /mnt ...
- Python开发qq批量登陆
操作步骤: 1.打开qq软件 2.移动鼠标到qq输入处 3.在输入处,点击鼠标,输入帐号 4.模拟按下tab键,输入密码,模拟点回车登录 #coding=utf-8 import os import ...
- libpcap丢包原理分析及Fedora 9 内核2.6.25.14下安装PF-RING的详细过程
看到网上有人讲解fedora 9下安装PF-RING的过程,都是几年前的了,比较老了,我安装PF-RING就是为了使用libpcap库,libpcap的原理是通过socket 将数据包从网卡 捕获数据 ...
- centos6.5下Nginx的安装
此处主要介绍通过配置Nginx的官方yum源,通过yum安装Nginx.参考官网:http://nginx.org/en/linux_packages.html 主要分为以下步骤: 1.配置yum源: ...
- 一个基于 EasyUI 的前台架构(3)封装操作Tabs的JS代码
一般来说,系统框架的主内容区会引入另一个独立的 Web 页面来实现系统的功能,所以在在 Tabs 里的每一个标签页里使用 iframe 标签来引入子页面.所以这里可以将 Tabs 的 Content ...
- jetty访问jsp页面出现异常:org.apache.jasper.JasperException: PWC6345: A full JDK (not just JRE) is required解决
今天在jetty下配置一个jsp模版的报表页面,报如下异常信息: org.apache.jasper.JasperException: PWC6345: There is an error in ...
- 报错:org.apache.jasper.JasperException: /jsp/head.jsp (line: 1, column: 2) Page directive: illegal to
上面报错提示的是org.apache.jasper.JasperException: /jsp/head.jsp (line: 1, column: 2) Page directive: illega ...