谁把我的表给drop了?
今天生产上有人把几张表给DROP了,一通折腾。恢复备份导数回来数据,重建索引。
但是,我就想知道是谁给干掉了。
到你被删除表数据库中找日志吧。其它的也想不到更好办法了
USE '被删表数据库'
--查年那些创建和删除表的用户和时间
SELECT
[Xact ID],Operation,[Transaction Id],SUSER_SNAME([Transaction SID]) [User],
[Transaction Name],[Begin Time],[SPID],Description
FROM fn_dblog (NULL, NULL)
WHERE [Transaction Name]= 'DROPOBJ' or [Transaction Name]='CREATE TABLE'
知道谁干的了。
等等,这只是知道它删除表了,能知道他删除那个表了吗?
SELECT [Lock Information] FROM fn_dblog (NULL, NULL)
WHERE
[Lock Information] LIKE '%SCH_M OBJECT%'
and [Transaction Id]='0000:0000022d'
结果:
Lock Information
HoBt 0:ACQUIRE_LOCK_SCH_M OBJECT: 12:2105058535:0
这个[Transaction Id]来自第一个查询中。上面标出结果中12是DBID,而后面的是objectid,由于表已经在数据库里删除了。我们没有办法通过object_name()来得到表名,所以只能拿着这个ID去恢复的数据库里找了。
或者可以通过其它的方法:
如果你的‘default trace enabled’是默认设置,那就有好办法了。
通过下面的语句确认是否启动:
select * from sys.configurations
where name = 'default trace enabled'
如果是启用的,OK,我们可以使用下面查询
SELECT SessionLoginName,LoginName,SPID,StartTime,ObjectID,ObjectName ,TransactionID
FROM fn_trace_gettable
('D:\Program Files\Microsoft SQL Server\MSSQL10.SQL2K8\MSSQL\Log\log_8.trc', default)
where DatabaseName='Test'
其中的那个trc文件在你的系统安装路径里,例如我的
按修改日期排序,找出最新一个。一般是LOG日志数字比较大的那个,我的是log_8.trc。
好了,我们看看上面的查询返回的结果
看到了吧,上面的TransactionID列的值正好与我们第一个查询中[Xact ID]值对上了。这样我们就能确认什么人在什么时间删除了什么表了。
其实,SQL SERVER已经具有这个功能。
Reports > Standard Reports > Schema Changed History
这里有一个条件是你的数据库是full恢复模式,你的日志没有被断了。是否可能从已经备份的事务日志里找呢?也是可以的,下次我们一起研究一下吧~~
参考
http://www.sqlskills.com/blogs/paul/finding-out-who-dropped-a-table-using-the-transaction-log/
http://sqlserver-help.com/2011/06/08/help-who-dropped-objects-from-database/
http://msdn.microsoft.com/en-us/library/ms175513.aspx?s=1
谁把我的表给drop了?的更多相关文章
- sql语句中----删除表数据drop、truncate和delete的用法
sql语句中----删除表数据drop.truncate和delete的用法 --drop drop table tb --tb表示数据表的名字,下同 删除内容和定义,释放空间.简单来说就是把整 ...
- 2019.6.13_SQL语句中----删除表数据drop、truncate和delete的用法
一.SQL中的语法 1.drop table 表名称 eg: drop table dbo.Sys_Test 2.truncate table 表 ...
- 删除表数据drop、truncate和delete的用法
说到删除表数据的关键字,大家记得最多的可能就是delete了 然而我们做数据库开发,读取数据库数据.对另外的两兄弟用得就比较少了 现在来介绍另外两个兄弟,都是删除表数据的,其实也是很容易理解的 老大- ...
- Oracle数据表被drop后的恢复
对于被drop的表和索引,都会存放在回收站中(所以对于生产的数据库必须设置好回收站功能) 由于本次生成环境在drop掉已有的表后,又一次创建了很多的表,全部直接还原的话会提示原有对象存在,表名反复.当 ...
- mysql语句中----删除表数据drop、truncate和delete的用法
程度从强到弱 1.drop table tb drop将表格直接删除,没有办法找回 2.truncate (table) tb 删除表中的所有数据,不能与where一起使用 ...
- mysql----快速删除数据表(drop,truncate.delete)
概念: 三者均可删除数据表 TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行.但 TRUNCATE TABLE 比 DELETE 速度快 ...
- 数据库之删除表数据drop、truncate和delete的用法
数据库中删除表数据的关键字,最常用的可能就是delete了,另外其实还有drop和truncate两个关键字. 老大:drop 命令格式:drop table tb ---tb表示数据表的名字,下 ...
- mysql:删除表数据drop、truncate和delete的用法
程度从强到弱 1.drop table tb drop将表格直接删除,没有办法找回 2.truncate (table) tb 删除表中的所有数据,不能与where一起使用 ...
- oracle中删除表:drop、delete、truncate
相同点,使用drop delete truncate 都会删除表中的内容 drop table 表名 delete from 表名(后面不跟where语句,则删除表中所有的数据) truncate t ...
随机推荐
- SpringBoot和SpringCloud区别
SpringBoot专注于快速方便的开发单个个体微服务. SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务整合并管理起来, 为各个服 ...
- 如何高效的算出2x8的值
原文出自:https://blog.csdn.net/seesun2012 位移算法,如何高效的算出2*8的值,为什么8<<1,4<<2,2<<3,1<< ...
- 推荐几款基于Bootstrap的响应式后台管理模板
1.Admin LTE 该模版开源免费. AdminLTE - 是一个完全响应式管理模板.基于Bootstrap3的框架.高度可定制的,易于使用.支持很多的屏幕分辨率适合从小型移动设备到大型台式机. ...
- spring整合struts2和hibernate
1.spring 1.1 jar包 1.2 spring.xml <?xml version="1.0" encoding="UTF-8"?> &l ...
- LDAP概念了解
LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP.LDAP支持TCP/IP,这对访问Internet是必须的. L ...
- PAT 1071. Speech Patterns
又是考输入输出 #include <cstdio> #include <cstdlib> #include <string> #include <vector ...
- mybatis向数据库插入数据 (传入的是一个实体类)
/** * 插入用户信息 user为实体类 * @param user */ public int insert( User user); //实体类不用@param标注 //mybatis的xml文 ...
- [摘]全文检索引擎Solr系列—–全文检索基本原理
原文链接--http://www.importnew.com/12707.html 全文检索引擎Solr系列—–全文检索基本原理 2014/08/18 | 分类: 基础技术, 教程 | 2 条评论 | ...
- ef使用dbfirst方式连接mysql
1.安装 mysql connector net 6.9.9 https://dev.mysql.com/downloads/file/?id=463758 和mysql for visual st ...
- JavaScript 访问对象属性和方法及区别
这篇文章主要介绍了浅析JavaScript访问对象属性和方法及区别的相关资料,仅供参考 属性是一个变量,用来表示一个对象的特征,如颜色.大小.重量等:方法是一个函数,用来表示对象的操作,如奔跑.呼吸. ...