每天,我的一些数据库行会被自动删除。
即使是日志文件也会被删除,因此我无法检查是谁删除了这些文件。
我不明白该怎么做。
答案 0 :(得分:2)
如果SQL Server是预生产的,您可以将目标表的所有删除权限拉出来,等待查看谁投诉。如果在这个表上不允许删除,即使在生产中,那么限制该功能向前发展也是一个好主意。
除此之外,尝试向表中添加删除触发器以进行审核。您可以获取源IP地址,登录用户信息等。如果需要,您甚至可以回滚删除。
这是一篇关于使用触发器进行审核的好文章。
编辑:
如果要停止表上的所有删除,可以使用以下触发器。
CREATE TRIGGER dbo.MyTable_Delete_Instead_Of_Trigger
ON dbo.MyTable
INSTEAD OF DELETE
AS
BEGIN
raiserror('Deletes are not allowed.', 16, 1)
END
答案 1 :(得分:1)
针对捕获所有RPC已完成事件和SQL BatchCompleted事件的数据库运行SQL事件探查器,并查看它以查找执行删除操作的任何事件。