在我的Sybase服务器中,表(TBL_RESOURCE
)的某些行会以随机间隔从未知来源中删除。我尝试了很多,但我无法找到这些数据正在删除的源/文件/进程。有没有找到这个问题的机制?我需要找出谁正在删除这些行..
我们如何找出谁被删除以及从哪个文件中删除?
我们可以使用触发器来查找删除源吗?
答案 0 :(得分:2)
好的,所以你没有存储过程或事务(这将允许正常的安全性:仅授予sprocs权限;不对用户的表进行直接更新)。因此,您可以直接向用户授予。这意味着他们可以从任何客户端程序插入/更新/删除,包括Excel。因此,很可能在应用程序的源代码中没有从表中删除的代码段。随机删除行是在线数据库的本质;保护它免受未经授权的删除是DBA的要求。
我认为你已经授予了特定人群的权限,而不是整个世界,而且你不确定究竟是谁在做这件事。最简单的是简单地询问小组。
下一个最简单的方法是打开该表的审核,或者允许的用户组(或角色)。但是,如果你没有设置审计,可能会造成障碍。
第三,触发器。
还有其他方法,但它们有很大的开销(22%),需要大量的实施工作,而且你将不得不涉及大量的数据。
如果您的环境听起来不安全且不稳定,并且该表不应该被删除,只需撤消该(一)表的权限,并等到有人告诉您,他们的权限已更改
“假设您没有以DBA或其他[特权]帐户登录的每个用户。”
这当然是一件非常愚蠢的事情,要求,恳求灾难。像向所有用户授予对所有表的删除一样愚蠢。我知道你来自哪里。
答案 1 :(得分:1)
这样的事情可以解决问题。
create trigger deltrig
on TBL_RESOURCE
for delete
as
BEGIN
insert TBL_LOG (modifiedBy, modifiedDate)
select user_name(), getdate() from deleted
END
(你必须明确创建日志表TBL_LOG)
答案 2 :(得分:0)