sql server 2008 查看数据库删表日志

孤人 提交于 2021-01-28 22:10:39
今天遇到一个很奇怪的问题,数据库中的表被无缘无故的删了,而且是有针对性的定时删;查代码找了一条也没看出什么问题,后来查sql server的日志看到删除记录,只能定位到时间,不能定位到操作者;后来从现场人员口中得知,除了本服务在跑之外还有另一个服务也在跑;后来试着交替停掉两个服务,才定位到是另一个服务操作的;原始是另一个服务和本服务使用同一个数据库,且两个服务生成的表名中的关键字一样才删,后来就尝试着改表名,就没有问题了。简直一个坑字了得。
 
通过查看日志追寻原因:

1. select * from sys.configurations where configuration_id = 1568
2. select * from ::fn_trace_getinfo( 0 )
3. select
loginname,
loginsid,
spid,
hostname,
applicationname,
servername,
databasename,
objectname,
e.category_id,
cat.name as [CategoryName] ,
textdata,
starttime,
eventclass,
eventsubclass, --0表示begin,1表示commit
e.name as EventName
from ::fn_trace_gettable( 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\log.trc' , 0 )
inner join sys.trace_events e
on eventclass = trace_event_id
inner join sys.trace_categories as cat
on e.category_id = cat.category_id
where databasename = 'TraceDB' and
objectname is null and --根据objectname来过滤
e.category_id = 5 and --category 5表示对象
e.trace_event_id = 46 --trace_event_id: 46表示Create对象,47表示Drop对象,164表示修改对象

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!