2016-05-23 89 views
0

最近我遇到了我正在处理的服务器上的特定SQL Server用户帐户,该服务器可以执行不会触发触发器的查询。在不同用户下执行的相同查询按预期触发触发器。SQL Server - 触发器不会触发特定用户

我使用有问题的用户检查了sys.triggers表,它们都被启用。

在SQL Server中是否有一个设置可以防止为特定用户帐户触发触发器?

+0

请提供查询的示例。某些BULK操作具有标志,允许您控制是否触发触发器。 – Alex

+0

也是触发器的一个例子。 – MartW

回答

0

没有设置或旋钮,你可以激活,从而触发不会火了几users.You需要一些自定义逻辑

这是通过使用返回 statemnt和检查用户名与SUSER_SNAME()

create trigger trg_test2 
on dbo.test2 
after insert 
as 
Begin 

if (suser_Sname()='mike') 
Begin 
return 
END 

insert into dbo.test3 
select * from inserted 

end 


--test2 has trigger which inserts into test3 

insert into dbo.test2 
select 1 

select * from test2 
select * from test3--Table 3 wont have any data if username is mike 
+0

有问题的用户可能只执行BULK INSERT命令。该命令有一个禁用触发器的设置。 – Alex