none
sqlserver2008 根据日志文件 恢复数据? RRS feed

答案

  • 这样也不行! 我每次操作数据库时,还得备份时间!

    備份時間?以上是通過日誌恢復誤操作,並非讓你備份日期,把數據庫備份在另一個環境測試恢復

    事情發生后,才想起恢復這回事,這是沒辦法的事

    -----------------------

    如果時SQL2000/2005還可以通過Log explorer針對性恢復,SQL2008目前還沒發現版本支持.

    在平日做好數據安全工作,設置備份數據庫文件和日誌的時間點

     


    ROY WU(吳熹)
    • 已标记为答案 Ai-hua Qiu 2011年4月19日 7:17
    2011年4月11日 6:34
    版主

全部回复

  • If the db is in simple recovery model, restore it with new db name from recent backup then copy those rows over assume they are in restored db.  otherwise, you can restore db and log to point before deleting rows or recovery rows with third party tools.
    2011年4月11日 3:41
  • 這里貼一下通過時間點還原的例子

    --创建测试数据库
    CREATE DATABASE Db
    GO

    --对数据库进行备份
    BACKUP DATABASE Db TO DISK='c:\db.bak' WITH FORMAT
    GO

    --创建测试表
    CREATE TABLE Db.dbo.TB_test(ID int)

    --延时1秒钟,再进行后面的操作(这是由于SQL Server的时间精度最大为百分之三秒,不延时的话,可能会导致还原到时间点的操作失败)
    WAITFOR DELAY '00:00:01'
    GO

    --假设我们现在误操作删除了 Db.dbo.TB_test 这个表
    DROP TABLE Db.dbo.TB_test

    --保存删除表的时间
    SELECT dt=GETDATE() INTO #
    GO

    --在删除操作后,发现不应该删除表 Db.dbo.TB_test

    --下面演示了如何恢复这个误删除的表 Db.dbo.TB_test

    --首先,备份事务日志(使用事务日志才能还原到指定的时间点)
    BACKUP LOG Db TO DISK='c:\db_log.bak' WITH FORMAT
    GO

    --接下来,我们要先还原完全备份(还原日志必须在还原完全备份的基础上进行)
    RESTORE DATABASE Db FROM DISK='c:\db.bak' WITH REPLACE,NORECOVERY
    GO

    --将事务日志还原到删除操作前(这里的时间对应上面的删除时间,并比删除时间略早
    DECLARE @dt datetime
    SELECT @dt=DATEADD(ms,-20,dt) FROM # --获取比表被删除的时间略早的时间
    RESTORE LOG Db FROM DISK='c:\db_log.bak' WITH RECOVERY,STOPAT=@dt
    GO

    --查询一下,看表是否恢复
    SELECT * FROM Db.dbo.TB_test

    /*--结果:
    ID
    -----------

    (所影响的行数为 0 行)
    --*/

    --测试成功
    GO

    --最后删除我们做的测试环境
    DROP DATABASE Db
    DROP TABLE #

    ROY WU(吳熹)
    2011年4月11日 4:32
    版主
  • 这样也不行! 我每次操作数据库时,还得备份时间!
    2011年4月11日 6:21
  • 这样也不行! 我每次操作数据库时,还得备份时间!

    備份時間?以上是通過日誌恢復誤操作,並非讓你備份日期,把數據庫備份在另一個環境測試恢復

    事情發生后,才想起恢復這回事,這是沒辦法的事

    -----------------------

    如果時SQL2000/2005還可以通過Log explorer針對性恢復,SQL2008目前還沒發現版本支持.

    在平日做好數據安全工作,設置備份數據庫文件和日誌的時間點

     


    ROY WU(吳熹)
    • 已标记为答案 Ai-hua Qiu 2011年4月19日 7:17
    2011年4月11日 6:34
    版主
  • Audit DB supports sql2k8.
    2011年4月11日 14:45