求救!数据库 每天被定时创建触发器。

nvllin1992 2013-10-14 09:14:33
服务器上安装的SQL 2005,这段时间每天凌晨两点的时候 总会在我的一个数据库中下的一个表给我创建个触发器,然后在系统的Tempdb 的库下面创建一个表,这个触发器还是加密的。。。。我不管是删除这个触发器还是禁用掉,都会在每天两点的时候给我创建出来。 求大婶告诉我怎么知道 这个触发器是怎么创建的。 我看过SQL代理里面的作业 没有创建任何东西。
...全文
410 37 打赏 收藏 转发到动态 举报
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 20 楼 luckyrandom 的回复:
晚上1:58将网络禁用或改IP,TRIGGER不会被创建吧?
那一定是前端程序定时在执行,既然代理里没有任务


呵呵,不会把,你用审核试试吧:

--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事件:
唐诗三百首 2013-10-16
  • 打赏
  • 举报
回复
引用 21 楼 nvllin1992 的回复:
。。。我用profiler trace 检测了俩晚上了,TMD居然没了。难道知道我在监测?
走漏风声了吧.
Mr_Nice 2013-10-16
  • 打赏
  • 举报
回复
引用 21 楼 nvllin1992 的回复:
。。。我用profiler trace 检测了俩晚上了,TMD居然没了。难道知道我在监测?
看来他也上CSDN了。 呵呵!
nvllin1992 2013-10-16
  • 打赏
  • 举报
回复
。。。我用profiler trace 检测了俩晚上了,TMD居然没了。难道知道我在监测?
  • 打赏
  • 举报
回复
我觉得可以在创建一个跟踪的详细信息表, 然后在数据库级别触发器中,把监控的信息插入到这个表中去。
  • 打赏
  • 举报
回复
呵呵,也是,不过只能一步一步追查: 比如这时我跟踪到的一些信息, 里面有时间,会话id,登录名,能不能通过会话查一下,这个会话的信息:
<EVENT_INSTANCE>
  <EventType>CREATE_TRIGGER</EventType>
  <PostTime>2013-10-16T14:43:08.727</PostTime>
  <SPID>54</SPID>
  <ServerName>GGG-PC</ServerName>
  <LoginName>ggg-PC\Administrator</LoginName>
  <UserName>dbo</UserName>
  <DatabaseName>ggg</DatabaseName>
  <SchemaName>dbo</SchemaName>
  <ObjectName>tt_2</ObjectName>
  <ObjectType>TRIGGER</ObjectType>
  <TargetObjectName>wc_table</TargetObjectName>
  <TargetObjectType>TABLE</TargetObjectType>
  <TSQLCommand>
    <SetOptions ANSI_NULLS="ON" ANSI_NULL_DEFAULT="ON" ANSI_PADDING="ON" QUOTED_IDENTIFIER="ON" ENCRYPTED="FALSE" />
    <CommandText>
--insert into dbo.wc_table values(1)
--go

create trigger dbo.tt_2  
on dbo.wc_table  
after insert  
as  
  
print 'dbo.tt_2'  
</CommandText>
  </TSQLCommand>
</EVENT_INSTANCE>
select spid,
       kpid,
       hostname,
       program_name,  --程序名
       hostprocess,   --进程号
       cmd,
       nt_domain,
       nt_username,
       net_address,
       net_library,
       loginame
from sys.sysprocesses
where spid = 54
發糞塗牆 2013-10-16
  • 打赏
  • 举报
回复
突然想起,检查一下windows的计划任务有没有什么异常任务存在
nvllin1992 2013-10-16
  • 打赏
  • 举报
回复
引用 31 楼 yupeigu 的回复:
我又仔细看了一下,2005和2008还真是不一样,2005只支持数据库级别的create trigger、alter trigger、drop trigger这3个事件, 而2008则支持服务器级别的create trigger、alter trigger、drop trigger这3个事件, 这样的话,稍微麻烦一点,把代码修改一下,本来是on all server,现在只能改为on database了, 然后把这段代码,分别在要监控触发器的数据库上运行,对每个数据库单独进行监控。
修改成数据库级别的是可以了 可以看到哪个登录账号创建的触发器,创建时间等信息。不过我知道了这些以后,也无法判断他是由其他的软件定时执行的创建,还是远程登录数据库进行的创建。
  • 打赏
  • 举报
回复
我把代码改为数据库级别的触发器了哈,你在2005上试试:



--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


use 你要监控的数据库
go

--drop trigger gyy_server on database

--创建数据库级别的触发器
create trigger gyy_server
on database
for CREATE_TRIGGER
as

--把跟踪到的信息,插入到统一的跟踪表中
insert into master.dbo.server_eventdata
select EVENTDATA(),USER,SUSER_NAME()
go



--3.建表,建触发器

--drop table wc_table
use 你要监控的数据库
go

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
nvllin1992 2013-10-16
  • 打赏
  • 举报
回复
引用 31 楼 yupeigu 的回复:
我又仔细看了一下,2005和2008还真是不一样,2005只支持数据库级别的create trigger、alter trigger、drop trigger这3个事件, 而2008则支持服务器级别的create trigger、alter trigger、drop trigger这3个事件, 这样的话,稍微麻烦一点,把代码修改一下,本来是on all server,现在只能改为on database了, 然后把这段代码,分别在要监控触发器的数据库上运行,对每个数据库单独进行监控。
我先试一下 数据库级别的
  • 打赏
  • 举报
回复
我又仔细看了一下,2005和2008还真是不一样,2005只支持数据库级别的create trigger、alter trigger、drop trigger这3个事件, 而2008则支持服务器级别的create trigger、alter trigger、drop trigger这3个事件, 这样的话,稍微麻烦一点,把代码修改一下,本来是on all server,现在只能改为on database了, 然后把这段代码,分别在要监控触发器的数据库上运行,对每个数据库单独进行监控。
nvllin1992 2013-10-16
  • 打赏
  • 举报
回复
引用 28 楼 yupeigu 的回复:
[quote=引用 27 楼 nvllin1992 的回复:]
[quote=引用 26 楼 yupeigu 的回复:]
[quote=引用 25 楼 nvllin1992 的回复:]
[quote=引用 24 楼 yupeigu 的回复:]
[quote=引用 20 楼 luckyrandom 的回复:]
晚上1:58将网络禁用或改IP,TRIGGER不会被创建吧?
那一定是前端程序定时在执行,既然代理里没有任务


呵呵,不会把,你用审核试试吧:

--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事件:
[/quote] 这是在SQL 2008的上面执行的吗? 我这里的数据库是2005的[/quote]

我的是在2008r2上的,我刚才查了一下,2005也支持服务器级别的触发器的,你试试[/quote]是支持服务器级别的 但是好像不支持CREATE_TRIGGER
http://www.cnblogs.com/hsj2010/archive/2010/10/12/1848679.html 这个里面的 我还看不大懂[/quote]

我看了一下你发的连接,上面有提到2005支持的事件组,里面有ddl_trigger_events事件组,下面有3个:create trigger、alter trigger、drop trigger3个事件,所以应该是支持的。[/quote] 他提示这个信息,我本来之前也想着用这个东西 禁止数据库登录用户禁止创建触发器的,但是我在SQL2008上面能执行 但是在2005上面就不行
  • 打赏
  • 举报
回复
准确的说create trigger、alter trigger、drop trigger这3个事件是数据库级别的,只是在整个服务器上,也就是所有数据库上都跟踪create trigger、alter trigger、drop trigger事件。
  • 打赏
  • 举报
回复
引用 27 楼 nvllin1992 的回复:
[quote=引用 26 楼 yupeigu 的回复:] [quote=引用 25 楼 nvllin1992 的回复:] [quote=引用 24 楼 yupeigu 的回复:] [quote=引用 20 楼 luckyrandom 的回复:] 晚上1:58将网络禁用或改IP,TRIGGER不会被创建吧? 那一定是前端程序定时在执行,既然代理里没有任务
呵呵,不会把,你用审核试试吧:

--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事件: [/quote] 这是在SQL 2008的上面执行的吗? 我这里的数据库是2005的[/quote] 我的是在2008r2上的,我刚才查了一下,2005也支持服务器级别的触发器的,你试试[/quote]是支持服务器级别的 但是好像不支持CREATE_TRIGGER http://www.cnblogs.com/hsj2010/archive/2010/10/12/1848679.html 这个里面的 我还看不大懂[/quote] 我看了一下你发的连接,上面有提到2005支持的事件组,里面有ddl_trigger_events事件组,下面有3个:create trigger、alter trigger、drop trigger3个事件,所以应该是支持的。
nvllin1992 2013-10-16
  • 打赏
  • 举报
回复
引用 26 楼 yupeigu 的回复:
[quote=引用 25 楼 nvllin1992 的回复:] [quote=引用 24 楼 yupeigu 的回复:] [quote=引用 20 楼 luckyrandom 的回复:] 晚上1:58将网络禁用或改IP,TRIGGER不会被创建吧? 那一定是前端程序定时在执行,既然代理里没有任务
呵呵,不会把,你用审核试试吧:

--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事件: [/quote] 这是在SQL 2008的上面执行的吗? 我这里的数据库是2005的[/quote] 我的是在2008r2上的,我刚才查了一下,2005也支持服务器级别的触发器的,你试试[/quote]是支持服务器级别的 但是好像不支持CREATE_TRIGGER http://www.cnblogs.com/hsj2010/archive/2010/10/12/1848679.html 这个里面的 我还看不大懂
  • 打赏
  • 举报
回复
引用 25 楼 nvllin1992 的回复:
[quote=引用 24 楼 yupeigu 的回复:] [quote=引用 20 楼 luckyrandom 的回复:] 晚上1:58将网络禁用或改IP,TRIGGER不会被创建吧? 那一定是前端程序定时在执行,既然代理里没有任务
呵呵,不会把,你用审核试试吧:

--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事件: [/quote] 这是在SQL 2008的上面执行的吗? 我这里的数据库是2005的[/quote] 我的是在2008r2上的,我刚才查了一下,2005也支持服务器级别的触发器的,你试试
nvllin1992 2013-10-16
  • 打赏
  • 举报
回复
引用 24 楼 yupeigu 的回复:
[quote=引用 20 楼 luckyrandom 的回复:] 晚上1:58将网络禁用或改IP,TRIGGER不会被创建吧? 那一定是前端程序定时在执行,既然代理里没有任务
呵呵,不会把,你用审核试试吧:

--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事件: [/quote] 这是在SQL 2008的上面执行的吗? 我这里的数据库是2005的
五问题 2013-10-15
  • 打赏
  • 举报
回复
这个也能被追踪????黑客么?
blackkettle 2013-10-15
  • 打赏
  • 举报
回复
围观,学习了!
秦始皇不抽烟 2013-10-15
  • 打赏
  • 举报
回复
是不是有作业,定时执行了
加载更多回复(17)

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧