今天遇到一个问题,数据库有几张表的数据被清除了。因为数据是昨天晚上被删除的,当时没有用户访问,所以根据日志备份就可以将数据还原,没有数据损失。但是是谁删除了数据呢?
在2008之前有很多工具都可以分析数据库的在线日志和备份文件,但是支持2008以及更高版本的不是很多。这里我是用了ApexSQL Log 2011,关于ApexSQL Log 2011的功能:
ApexSQL Log is a SQL Server Transaction Log reader that allows viewing transaction log data in read-friendly format. Audit and undo SQL database changes of your choosing. Determine who changed the data and when the change occurred. Read the transaction log to find out who created, changed or dropped a database object
这个正好是我所需要的,而且有14天的免费试用版,功能也没有限制。下载之后安装,然后打开在线日志同时选择了问题发生之后的日志文件进行分析,轻松的找出了当时执行的语句。结果并不是我们想象的数据删除,而是应用程序的某个功能被同时无误使用了,结果导致数据库表被DROP然后重新创建。
选择在线日志和备份文件界面如图:
有一个缺点是显示栏位有点少,如果能够显示当时执行的应用程序名称就更完美了。不过,对于数据库日志分析确实是一款不错的产品。
本文转自 lzf328 51CTO博客,原文链接: