我有兴趣编写一个触发器,它会忽略来自特定SQL用户的查询,但会对所有其他SQL用户采取操作。有没有办法做到这一点?
但请注意:用户需要进行一些查询,因此我需要允许一些查询/删除/等。
答案 0 :(得分:3)
只需调整他们的权限,不要包括选择和其他任何你想阻止他们做的事情。
答案 1 :(得分:1)
如果你现在有一个你不想触发的触发器(我们在移动大量数据时在审计触发器上完成了这个),你可以在触发器的开头做一些事情:
if (suser_sname() = 'somename') return
如果你想为那个人做一些不同的事情,你会做类似的事情:
if (suser_sname() = 'somename)
BEGIN
some code
END
ELSE
BEGIN
someother code
END
请注意几件事。请谨慎使用此代码 。首先,如果您可以通过安全权利做您需要的事情,那么这是一个更好的选择。将某人的姓名硬编码到触发器中可能会导致奇怪的结果,因为所有人都忘记了你把它放在那里。如果您需要在短期内完成(例如,在一段时间内将100,000,000,000条记录分批移动到数据库中而不会触及auidit触发器),那么在项目完成时不要忘记将其更改回来。您不希望永远不审计某人的行为,尤其是在您审计财务交易时。此外,在触发器中执行某些操作仅适用于插入/更新/删除。您无法阻止从触发器中进行选择。
答案 2 :(得分:0)
内置的USER功能如何:
If USER <> [your case]
Begin
Do Stuff
End
答案 3 :(得分:0)