2016-05-23 86 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