加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

取消删除最近删除的行sql server

发布时间:2020-12-12 07:48:57 所属栏目:MsSql教程 来源:网络整理
导读:我错误地删除了一些行b,我可以使用日志或SSMS恢复它们 解决方法 如果您的数据库处于简单恢复模式,那么您可能会运气不好.您可以还原到最新的备份,但如果它很久以前它可能不包含您删除并希望重新插入的行的副本.在此期间也很可能插入了其他数据.您可以恢复到新
我错误地删除了一些行b,我可以使用日志或SSMS恢复它们

解决方法

如果您的数据库处于简单恢复模式,那么您可能会运气不好.您可以还原到最新的备份,但如果它很久以前它可能不包含您删除并希望重新插入的行的副本.在此期间也很可能插入了其他数据.您可以恢复到新数据库,然后执行SQL手术以恢复消失的数据.

如果您的数据库处于完全恢复模式,则:

>查找上次完整备份,此后的任何增量备份以及自上次增量备份或完全备份以来的所有日志备份文件,并将其还原到正确的时间点.如果可以接受,您可以覆盖数据库,或者可以还原到新数据库并执行SQL手术.
>恢复过程看起来像这样:

BACKUP DATABASE YourDB TO DISK = 'D:MSSQLDataYourDBYourDB Pre-Repair.bak'
-- It is CRUCIAL you take a new backup before doing ANYTHING so you don't
-- make another mistake you can't reverse.

RESTORE DATABASE YourDB FROM DISK
   = 'D:MSSQLDataYourDBYourDB 20121208 110000.bak' WITH REPLACE,NORECOVERY;
-- be very careful with REPLACE as needing it proves there is un-backed-up data
RESTORE LOG YourDB FROM DISK
   = 'D:MSSQLDataYourDBYourDB 20121208 111500.log' WITH NORECOVERY;
RESTORE LOG YourDB FROM DISK
   = 'D:MSSQLDataYourDBYourDB 20121208 113000.log' WITH NORECOVERY;
-- restore more log files,all of them,in order,with none skipped
RESTORE LOG YourDB FROM DISK
   = 'D:MSSQLDataYourDBYourDB 20121209 020000.log'
   WITH STOPAT = '20121209 01:57:00',RECOVERY;

请注意,我在这里使用了WITH STOPAT,它允许您将数据库恢复到特定时间点.在我的示例中,日志备份每15分钟进行一次,致命查询在2012-12-09上午1:57:15发布.

如果要将数据库还原到新数据库,则必须执行以下操作:

RESTORE DATABASE NewDB FROM DISK
   = 'D:MSSQLDataYourDBYourDB 20121208 110000.bak'
WITH
   MOVE 'YourDBLogicalName' TO 'D:MSSQLDataNewDB.mdf',MOVE 'YourDBLogicalName_Log' TO 'L:MSSQLLogsNewDB.ldf';

使用RESTORE FILELISTONLY来确定备份中的内容.如果同一文件中有多个备份,则会有更多语法来读取该信息,然后指定您要使用哪个.使用sp_helpdb’YourDB’找出放置NewDB数据库和日志文件的位置.

然后还有更多的脚本来重命名逻辑文件,如果你愿意的话(我总是这样做).

当然,愚蠢的我,我现在才意识到你可以使用SSMS GUI完成大部分工作.但是如果你想开始理解所有这些东西并且变得非常擅长,我建议编写脚本.我是一名开发人员,但可以恢复数据库lickety-split而无需请求“官方”DBA的帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读