为什么数据库行会自动被删除sql 2008

时间:2012-12-09 15:40:52

标签: sql-server

每天,我的一些数据库行会被自动删除。

即使是日志文件也会被删除,因此我无法检查是谁删除了这些文件。

我不明白该怎么做。

2 个答案:

答案 0 :(得分:2)

如果SQL Server是预生产的,您可以将目标表的所有删除权限拉出来,等待查看谁投诉。如果在这个表上不允许删除,即使在生产中,那么限制该功能向前发展也是一个好主意。

除此之外,尝试向表中添加删除触发器以进行审核。您可以获取源IP地址,登录用户信息等。如果需要,您甚至可以回滚删除。

这是一篇关于使用触发器进行审核的好文章。

http://weblogs.asp.net/jgalloway/archive/2008/01/27/adding-simple-trigger-based-auditing-to-your-sql-server-database.aspx

编辑:

如果要停止表上的所有删除,可以使用以下触发器。

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事件探查器,并查看它以查找执行删除操作的任何事件。