Asp.net SQL检查谁删除了行并恢复它们

Asp.net SQL检查谁删除了行并恢复它们,asp.net,sql,sql-server,data-recovery,logfile-analysis,Asp.net,Sql,Sql Server,Data Recovery,Logfile Analysis,我有数据库表中已删除记录的主键,我想检查是谁删除了这些记录。我的应用程序使用asp.net成员身份进行用户身份验证。除了我,没有人登录SQL server 我不是DBA,所以这对我来说很困惑,但对我来说很困惑。还发现了一些工具,如red gate和apex sql,但red gate仅适用于sql 2000。您可以尝试使用该工具恢复删除的行,但实际上看不到是谁删除了它们。所有第三方工具只能捕获SQL Server登录 您还应检查成功恢复的必要先决条件: SQL Server 2005、2008、

我有数据库表中已删除记录的主键,我想检查是谁删除了这些记录。我的应用程序使用asp.net成员身份进行用户身份验证。除了我,没有人登录SQL server

我不是DBA,所以这对我来说很困惑,但对我来说很困惑。还发现了一些工具,如red gate和apex sql,但red gate仅适用于sql 2000。

您可以尝试使用该工具恢复删除的行,但实际上看不到是谁删除了它们。所有第三方工具只能捕获SQL Server登录

您还应检查成功恢复的必要先决条件:

  • SQL Server 2005、2008、2008 R2或2012数据库
  • 数据库处于完全恢复模式
  • 数据库自动收缩已关闭
  • 事务日志未被截断
  • 备份文件未使用任何第三方工具进行压缩和解压缩
  • 完整数据库备份和事务日志备份是SQL Server本机或本机压缩的,是SQL Server本机或本机压缩的
  • 自完整数据库备份存在以来的整个事务日志备份链。或者是完整数据库备份,然后是差异数据库备份,然后是事务日志备份链,从备份链到要恢复的时间点
  • 如果使用原始数据库备份还原数据库,则必须从原始服务器提供事务日志备份,或使用原始服务器mdf和ldf文件还原数据库

  • 您想恢复(取消删除)SQL行。。。这不是很容易,也不是不可能,但它不是微不足道的。如果您可以控制应用程序,那么为什么不根据用户角色限制删除操作?如果继续,请将详细信息记录在审核表中。或者(我就是这么做的),不要删除记录。而是使用一个状态标志(或枚举)来指示记录是否处于活动状态。有很多方法可以剥这只猫的皮。如果您无法控制该应用程序,则删除操作上的存储过程可能是一种方法。这些行是否从表中物理删除?如果是,那么恢复它们将是一件神奇的事情,除非您有一个数据库备份,我将IsDeleted列添加到表中,并按deleted列存储删除行的人,要恢复它,只需更改IsDeleted字段。@robnick:是的,我完全控制应用程序,我也限制了用户和角色,但当我们进行审核时,发现一些记录已被删除。我发现了一种用户可以删除记录的方法,但完全删除主记录和子记录非常耗时。现在,我计划将应用程序中执行的每个操作的日志文件以xml格式保存。但现在我需要看看是谁删除了它们。我已经创建了datecreated、timecreated、last updated和Who last updated。但是没有关于deletion@EmadMokhtar行被物理删除。我有上面提到的其他专栏,但没有关于删除的任何信息。您的建议很好,我会这么做,但在我当前的场景中我能做什么?@AliUmair请阅读此MSDN线程