zoukankan      html  css  js  c++  java
  • SQL Server 备份还原

    SQL Server支持三种备份方式

    • 完全备份;
    • 差异备份
    • 事务日志备份

    一般备份方式为,完全备份/每周,差异备份/每天,事务日志备份/按分钟计,这样可确保备份的高效性和可恢复性。

     1. 完全备份

    • 备份脚本
    BACKUP DATABASE PCT TO DISK ='D:CompanyDataSQL ServerBackupPCT.bak';
    • 还原备份
    RESTORE DATABASE PCT
    FROM DISK = 'D:CompanyDataSQL ServerBackupPCT.bak'
    WITH RECOVERY;

    2. 差异备份

    • 备份脚本
    BACKUP DATABASE PCT TO DISK = 'D:CompanyDataSQL ServerBackupPCT_Differential.bak' WITH DIFFERENTIAL;
    GO
    • 还原备份

    在SQL Server中还原差异备份,需要先还原在差异备份时间点之前的一个完整备份,在还原完整备份时要加上NORECOVERY参数,SQL语句如下:

    RESTORE DATABASE PCT 
    FROM  DISK = 'D:CompanyDataSQL ServerBackupPCT.bak'
    WITH  FILE = 1,  
    NOUNLOAD,  
    STATS = 10, 
    NORECOVERY
    GO

      还原差异备份时,如果只有一个差异备份文件需要还原,无需使用NORECOVERY参数,SQL语句如下:

    RESTORE DATABASE PCT 
    FROM  DISK = 'D:CompanyDataSQL ServerBackupPCT_Differential.bak'
    WITH  FILE = 1,  
    NOUNLOAD,  
    STATS = 10
    GO

      如果有多个差异备份文件需要还原,除了最后一个差异备份文件,其他都需要加上NORECOVERY参数

    事务日志备份

    • 事务日志备份
    BACKUP LOG PCT TO DISK ='D:CompanyDataSQL ServerBackupPCT_Log.bak';
    • 尾日志备份
    BACKUP LOG PCT TO DISK ='D:CompanyDataSQL ServerBackupPCT_TailLog.bak' WITH NORECOVERY;
    • 完整恢复到失败点
    USE master;
    BACKUP DATABASE PCT
    TO DISK ='D:CompanyDataSQL ServerBackupPCT.bak'
    WITH INIT;
    GO
    
    -- Perform a transaction log backup of the Test database
    BACKUP Log PCT
    TO DISK ='D:CompanyDataSQL ServerBackupPCT_log.bak'
    WITH INIT;
    GO
    
    -- ....<FAILURE OCCURS HERE>....
    
    -- Back up the tail of the log to prepare for restore
    BACKUP Log PCT
    TO DISK ='D:CompanyDataSQL ServerBackupPCT_taillog.bak'
    WITH NORECOVERY, INIT;
    GO
    
    -- Restore the full backup
    RESTORE DATABASE PCT
    FROM DISK = 'D:CompanyDataSQL ServerBackupPCT.bak'
    WITH NORECOVERY;
    
    -- Apply the transaction log backup
    RESTORE LOG PCT
    FROM DISK = 'D:CompanyDataSQL ServerBackupPCT_log.bak'
    WITH NORECOVERY;
    
    -- Apply the tail log backup
    RESTORE LOG PCT
    FROM DISK = 'D:CompanyDataSQL ServerBackupPCT_taillog.bak'
    WITH NORECOVERY;
    
    -- Recover the database
    RESTORE DATABASE PCT
    WITH RECOVERY;
    GO
    • 恢复到上次正确日志备份的时间点
    -- FULL BACKUP at 2:00 AM
    USE master ;
    BACKUP DATABASE PCT
    TO DISK = 'D:CompanyDataSQL ServerBackupPCT.bak'
    WITH INIT ;
    GO
    
    -- LOG BACKUP 1 at 2:15 AM
    USE master ;
    BACKUP LOG PCT
    TO DISK = 'D:CompanyDataSQL ServerBackupPCT_log.bak'
    WITH INIT ;
    GO
    
    -- LOG BACKUP 2 at 2:30 AM
    USE master ;
    BACKUP LOG PCT
    TO DISK = 'D:CompanyDataSQL ServerBackupPCT_log2.bak'
    WITH INIT ;
    GO
    
    --有时候很遗憾,不能进行完整恢复:例如由于灾难当前事务日志不可用。这样的话,我们会需要还原数据库导最近日志备份的末尾
    --如果灾难性故障发生在上午2:30,我们将需要恢复数据库到上午2:30的尾日志备份状态。
    --因为不能进行尾日志备份,我们只能恢复到特定点,我们要使用STOPAT选项。
    
    
    --RESTORE Full backup
    RESTORE DATABASE PCT
    FROM DISK = 'D:CompanyDataSQL ServerBackupPCT.bak'
    WITH NORECOVERY;
    
    --RESTORE Log file 1
    RESTORE LOG PCT
    FROM DISK = 'D:CompanyDataSQL ServerBackupPCT_log.bak'
    WITH NORECOVERY, STOPAT = 'Jan 01, 2020 12:00 AM';
    
    --RESTORE Log file 2
    RESTORE LOG PCT
    FROM DISK = 'D:CompanyDataSQL ServerBackupPCT_Log2.bak'
    WITH NORECOVERY, STOPAT = 'Jan 01, 2020 12:00 AM';
    
    --Recover the database
    RESTORE DATABASE PCT
    WITH RECOVERY;
    GO
  • 相关阅读:
    springmvc最简单的搭建,初学者必看
    搭建服务器需要的那些
    jaxb使用
    Memcached Java Client API详解
    memcached client --ref
    使用Dom4j解析XML
    架构整洁之道
    架构的整理
    VMware虚拟机的三种联网方法及原理
    软件开发进度管理
  • 原文地址:https://www.cnblogs.com/panchunting/p/SQLServer_Backup_Restore.html
Copyright © 2011-2022 走看看