我有一个SQL表,从中删除数据。没有人知道如何删除数据。我添加了一个触发器并知道时间,但是没有正在运行的作业会删除数据。每当从此表中删除行时,我还添加了一个触发器。然后我将删除的行和SYSTEM_USER插入到日志表中,但这并没有多大帮助。我能做些什么来了解数据被删除的方式和方式?是否有可能获得服务器ID或其他东西?谢谢你的建议。
抱歉:我使用的是SQL Server 2000.
** update 1 *:了解数据如何被删除很重要 - 最好我想知道正在执行的DTS包或SQL语句。
答案 0 :(得分:5)
只是一个猜测,但你有一个父表(由外键引用的那些)删除级联。如果是这样,当您删除父行时,子表中的条目也将被删除。
答案 1 :(得分:3)
如果恢复模式设置为“完全”,则可以检查日志。
除此之外,删除对表的任何删除授权。如果它仍然发生,任何人都在进行root / dbo访问 - 所以更改密码......
答案 2 :(得分:1)
您的数据库有哪些恢复模式?如果它已满,则Redgate log Rescue是免费的,并且可以对SQL2000起作用,这可能有助于您检索已删除的数据。 Overview Video 似乎显示用户列。
答案 3 :(得分:1)
暂时尝试记录所有交易,即使它会影响性能。 MS提供mssql探查器,如果需要,包括快速版本。有了它,您应该能够记录交易。作为分析器的替代方法,您可以使用trace_build存储过程将活动转储到引用文件中,然后只需“ctrl-f”用于单词“delete”或其他类似关键字的任何实例。有关详细信息,请参阅此SO页面...
Logging ALL Queries on a SQL Server 2008 Express Database?
此外,这可能听起来很愚蠢,但调查你所看到的不是删除的可能性。相反,调查记录是否只是“更新”,“替换,如果已经存在”,“上传”,或任何你喜欢称之为。在Mysql中,这是'INSERT ... ON DUPLICATE KEY UPDATE'语句。我不确定MSSQL版本。
答案 4 :(得分:0)
更改所有密码。尽可能少的人删除访问权限。