服务器上安装的SQL 2005,这段时间每天凌晨两点的时候 总会在我的一个数据库中下的一个表给我创建个触发器,然后在系统的Tempdb 的库下面创建一个表,这个触发器还是加密的。。。。我不管是删除这个触发器还是禁用掉,都会在每天两点的时候给我创建出来。 求大婶告诉我怎么知道 这个触发器是怎么创建的。 我看过SQL代理里面的作业 没有创建任何东西。
SQL 触发器
------解决方案--------------------
被入侵了?!
可以用DDL触发器,或SQL Profiler工具跟踪一下其来源.
------解决方案--------------------
呵呵,不会把,你用审核试试吧:
--1在master数据库中建立服务器级别跟踪表
use master
go
create table server_eventdata
(eventdata xml,
principal_user nvarchar(100),
login_user nvarchar(100)
)
go
/*
select * from sys.trigger_event_types
where type_name like '%trigger%' or
type_name like '%deny%' or
type_name like '%revoke%'
*/
--2建立服务器级别触发器
--drop trigger gyy_server on all server
create trigger gyy_server
on all server
for CREATE_TRIGGER
as
insert into server_eventdata
select EVENTDATA(),USER,SUSER_NAME()
go
--3.建表,建触发器
--drop table wc_table
create table dbo.wc_table(v int)
go
--insert into dbo.wc_table values(1)
--go
create trigger dbo.tt_2
on dbo.wc_table
after insert
as
print 'dbo.tt_2'
go
--查看记录的事件
select EVENTDATA,
eventdata.value('(/EVENT_INSTANCE/EventType)[1]','nvarchar(100)') as '事件类型',
eventdata.value('(/EVENT_INSTANCE/TSQLCommand)[1]','nvarchar(100)') as 'sql授权语句',
'登录名' + eventdata.value('(/EVENT_INSTANCE/LoginName)[1]','nvarchar(100)') +
'用户名' + eventdata.value('(/EVENT_INSTANCE/UserName)[1]','nvarchar(100)') + ',授予者'+
eventdata.value('(/EVENT_INSTANCE/Grantor)[1]','nvarchar(100)') + ' 把类型为:' +
eventdata.value('(/EVENT_INSTANCE/ObjectType)[1]','nvarchar(100)') + '的对象' +
eventdata.value('(/EVENT_INSTANCE/DatabaseName)[1]','nvarchar(100)') + '.' +
eventdata.value('(/EVENT_INSTANCE/SchemaName)[1]','nvarchar(100)') + '.' +
eventdata.value('(/EVENT_INSTANCE/ObjectName)[1]','nvarchar(100)') + '的' +
eventdata.value('(/EVENT_INSTANCE/Permissions/Permission)[1]','nvarchar(100)') +'权限授予给' +
eventdata.value('(/EVENT_INSTANCE/Grantees)[1]','nvarchar(100)')
from master.dbo.server_eventdata t
这个是查询出来的,看最后一条是检测到的create trigger事件: