zoukankan      html  css  js  c++  java
  • SqlServer备份恢复

     

    备份 (Transact SQL) | Microsoft Docs   https://docs.microsoft.com/zh-cn/sql/t-sql/statements/backup-transact-sql 

     

     

    还原 (Transact SQL) | Microsoft Docs   https://docs.microsoft.com/zh-cn/sql/t-sql/statements/restore-statements-transact-sql

     

    恢复模式

    SQL Server 备份和还原操作发生在数据库的恢复模式的上下文中。 恢复模式旨在控制事务日志维护。 “恢复模式”是一种数据库属性,它控制如何记录事务,事务日志是否需要(以及允许)进行备份,以及可以使用哪些类型的还原操作。 有三种恢复模式:简单恢复模式、完整恢复模式和大容量日志恢复模式。 通常,数据库使用完整恢复模式或简单恢复模式。 数据库可以随时切换为其他恢复模式。

    https://docs.microsoft.com/zh-cn/sql/relational-databases/backup-restore/recovery-models-sql-server

    备份

    完整备份

    https://docs.microsoft.com/zh-cn/sql/relational-databases/backup-restore/create-a-full-database-backup-sql-server

     完整数据库备份可对整个数据库进行备份。 这包括对部分事务日志进行备份,以便在还原完整数据库备份之后,能够恢复完整数据库备份。 完整数据库备份表示备份完成时的数据库。

    例如 ( Transact-SQL)

    下面的示例说明了如何使用 WITH FORMAT 覆盖任意现有备份并创建新介质集,从而创建一个完整数据库备份。 然后,此示例将备份事务日志。 在现实情况下,您必须执行一系列的定期日志备份。 在此示例中, AdventureWorks2012 示例数据库设置为使用完整恢复模式。

    USE master;
    ALTER DATABASE AdventureWorks2012 SET RECOVERY FULL;
    GO
    -- Back up the AdventureWorks2012 database to new media set (backup set 1).
    BACKUP DATABASE AdventureWorks2012
    TO DISK = 'Z:SQLServerBackupsAdventureWorks2012FullRM.bak'
    WITH FORMAT;
    GO
    --Create a routine log backup (backup set 2).
    BACKUP LOG AdventureWorks2012 TO DISK = 'Z:SQLServerBackupsAdventureWorks2012FullRM.bak';
    GO

     

    差异备份

    https://docs.microsoft.com/zh-cn/sql/relational-databases/backup-restore/differential-backups-sql-server

    差异备份所基于的是最近一次的完整数据备份。 差异备份仅捕获自该次完整备份后发生更改的数据。 差异备份所基于的完整备份称为差异的“基准” 。 完整备份(仅复制备份除外)可以用作一系列差异备份的基准,包括数据库备份、部分备份和文件备份。 文件差异备份的基准备份可以包含在完整备份、文件备份或部分备份中。

    优点

    • 与创建完整备份相比,创建差异备份的速度可能非常快。 差异备份只记录自差异备份所基于的完整备份后更改的数据。 这有助于频繁地进行数据备份,减少数据丢失的风险。 但是,在还原差异备份之前,必须先还原其基准。 因此,从差异备份进行还原必然要比从完整备份进行还原需要更多的步骤和时间,因为这需要两个备份文件。

    • 如果数据库的某个子集比该数据库的其余部分修改得更为频繁,则差异数据库备份特别有用。 在这些情况下,使用差异数据库备份,您可以频繁执行备份,并且不会产生完整数据库备份的开销。

    • 在完整恢复模式下,使用差异备份可以减少必须还原的日志备份的数量。

     

    日志备份

    https://docs.microsoft.com/zh-cn/sql/relational-databases/backup-restore/transaction-log-backups-sql-server 

    https://docs.microsoft.com/zh-cn/sql/relational-databases/backup-restore/apply-transaction-log-backups-sql-server

    仅复制备份

    https://docs.microsoft.com/zh-cn/sql/relational-databases/backup-restore/copy-only-backups-sql-server

     仅复制备份 是独立于常规 SQL Server 备份序列的 SQL Server 备份。 通常,进行备份会更改数据库并影响其后备份的还原方式。 但是,有时在不影响数据库总体备份和还原过程的情况下,为特殊目的而进行备份还是有用的。 仅复制备份就是用于此目的。

     

    恢复

    完整数据库还原(简单恢复模式) 

    https://docs.microsoft.com/zh-cn/sql/relational-databases/backup-restore/complete-database-restores-simple-recovery-model 

    数据库完整还原的目的是还原整个数据库。 整个数据库在还原期间处于脱机状态。 在数据库的任何部分变为联机之前,必须将所有数据恢复到同一点,即数据库的所有部分都处于同一时间点并且不存在未提交的事务。

    在简单恢复模式下,数据库不能还原到特定备份中的特定时间点。

    用于还原完整数据库备份的基本 Transact-SQLRESTORE 语法是:

    RESTORE DATABASE database_name FROM backup_device [ WITH NORECOVERY ]

    示例 (Transact-SQL)

    以下示例首先显示如何使用 BACKUP 语句来创建 AdventureWorks2012 数据库的完整数据库备份和差异数据库备份。 然后按顺序还原这些备份。 将数据库还原到完成差异数据库备份时的状态。

    该示例说明数据库完整还原方案的还原序列中的关键选项。 还原顺序 由通过一个或多个还原阶段来移动数据的一个或多个还原操作组成。 将省略与此目的不相关的语法和详细信息。 在恢复数据库时,尽管 RECOVERY 选项是默认值,但为清楚起见,仍建议显式指定该选项。

    USE master;
    --Make sure the database is using the simple recovery model.
    ALTER DATABASE AdventureWorks2012 SET RECOVERY SIMPLE;
    GO
    -- Back up the full AdventureWorks2012 database.
    BACKUP DATABASE AdventureWorks2012
    TO DISK = 'Z:SQLServerBackupsAdventureWorks2012.bak'
    WITH FORMAT;
    GO
    --Create a differential database backup.
    BACKUP DATABASE AdventureWorks2012
    TO DISK = 'Z:SQLServerBackupsAdventureWorks2012.bak'
    WITH DIFFERENTIAL;
    GO
    --Restore the full database backup (from backup set 1).
    RESTORE DATABASE AdventureWorks2012
    FROM DISK = 'Z:SQLServerBackupsAdventureWorks2012.bak'
    WITH FILE=1, NORECOVERY;
    --Restore the differential backup (from backup set 2).
    RESTORE DATABASE AdventureWorks2012
    FROM DISK = 'Z:SQLServerBackupsAdventureWorks2012.bak'
    WITH FILE=2, RECOVERY;
    GO

    完整数据库还原(完整恢复模式)

    https://docs.microsoft.com/zh-cn/sql/relational-databases/backup-restore/complete-database-restores-full-recovery-model

    将数据库还原到故障点

     

    通常,将数据库恢复到故障点分为下列基本步骤:

    1. 备份活动事务日志(称为日志尾部)。 此操作将创建结尾日志备份。 如果活动事务日志不可用,则该日志部分的所有事务都将丢失。

      重要

      在大容量日志恢复模式下,备份任何包含大容量日志操作的日志都需要访问数据库中的所有数据文件。 如果无法访问该数据文件,则不能备份事务日志。 在这种情况下,您必须手动重做自最近备份日志以来所做的所有更改。

      有关详细信息,请参阅结尾日志备份 (SQL Server)

    2. 还原最新完整数据库备份而不恢复数据库 (RESTORE DATABASE database_name FROM backup_device WITH NORECOVERY)。

    3. 如果存在差异备份,则还原最新的差异备份而不恢复数据库 (RESTORE DATABASE database_name FROM differential_backup_device WITH NORECOVERY).。

      还原最新差异备份可减少必须还原的日志备份数。

    4. 从还原备份后创建的第一个事务日志备份开始,使用 NORECOVERY 依次还原日志。

    5. 恢复数据库 (RESTORE DATABASE database_name WITH RECOVERY)。 此步骤也可以与还原上一次日志备份结合使用。

      下图说明此还原顺序。 故障发生后 (1),将创建结尾日志备份 (2)。 接着,将数据库还原到该故障点。 这涉及到还原数据库备份、后续差异备份以及在差异备份后执行的每个日志备份,包括结尾日志备份。

        

    基本 TRANSACT-SQL RESTORE 语法

    上图中还原顺序的基本 RESTORE Transact-SQL 语法如下:

    1. RESTORE DATABASE database FROM full database backup WITH NORECOVERY;

    2. RESTORE DATABASE database FROM full_differential_backup WITH NORECOVERY;

    3. RESTORE LOG database FROM log_backup WITH NORECOVERY;

      对于其他每个日志备份,重复此还原日志步骤。

    4. RESTORE DATABASE database WITH RECOVERY;

    示例:恢复到故障点 (Transact-SQL)

    以下 Transact-SQL 示例显示了将数据库还原到故障点的还原顺序中的基本选项。 此示例将创建数据库的结尾日志备份。 接下来,此示例将还原完整数据库备份和日志备份,然后还原结尾日志备份。 此示例将在最后的单独步骤中恢复数据库。

    USE master;
    --Create tail-log backup.
    BACKUP LOG AdventureWorks2012
    TO DISK = 'Z:SQLServerBackupsAdventureWorksFullRM.bak'
    WITH NORECOVERY;
    GO
    --Restore the full database backup (from backup set 1).
    RESTORE DATABASE AdventureWorks2012
    FROM DISK = 'Z:SQLServerBackupsAdventureWorksFullRM.bak'
    WITH FILE=1,
    NORECOVERY;

    --Restore the regular log backup (from backup set 2).
    RESTORE LOG AdventureWorks2012
    FROM DISK = 'Z:SQLServerBackupsAdventureWorksFullRM.bak'
    WITH FILE=2,
    NORECOVERY;

    --Restore the tail-log backup (from backup set 3).
    RESTORE LOG AdventureWorks2012
    FROM DISK = 'Z:SQLServerBackupsAdventureWorksFullRM.bak'
    WITH FILE=3,
    NORECOVERY;
    GO
    --recover the database:
    RESTORE DATABASE AdventureWorks2012 WITH RECOVERY;
    GO

    将数据库还原到指定时间点

     https://docs.microsoft.com/zh-cn/sql/relational-databases/backup-restore/restore-a-sql-server-database-to-a-point-in-time-full-recovery-model

    在完整恢复模式下,完整的数据库还原通常可恢复到日志备份中的某个时间点、标记的事务或 LSN。 但是,在大容量日志恢复模式下,如果日志备份包含大容量更改,则不能进行时点恢复。

    时点还原方案示例

    下例假定针对一个关键任务型数据库系统,每天午夜创建一个完整数据库备份;从星期一到星期六,每小时创建一个差异数据库备份;全天每 10 分钟创建一个事务日志备份。 若要将数据库还原到星期三凌晨 5:19 的状态, 请执行以下操作:

    1. 还原星期二午夜创建的完整数据库备份。

    2. 还原星期四凌晨 5:00 创建的差异数据库 备份。

    3. 应用星期四凌晨 5:10创建的事务日志 备份。

    4. 应用星期三凌晨 5:20 创建的事务日志 备份,指定恢复进程仅应用到凌晨 5:19 之前发生的事务。

      或者,如果需要将数据库还原到它在星期四凌晨 3:04 的状态, 而在星期四凌晨 3:00 创建的差异数据库备份已不可用, 则执行下列操作:

    5. 还原在星期三午夜创建的数据库备份。

    6. 还原星期四凌晨 2:00 创建的差异数据库 备份。

    7. 应用从星期四凌晨 2:10 到 3:00 创建的所有事务 日志 备份。

    8. 应用星期四凌晨 3:10 创建的事务日志 备份,停止凌晨 3:04 的恢复进程。

  • 相关阅读:
    饿了么P7级前端工程师进入大厂的面试经验
    前端程序员面试的坑,简历写上这一条信息会被虐死!
    这次来分享前端的九条bug吧
    移动端开发必会出现的问题和解决方案
    创建一个dynamics 365 CRM online plugin (八)
    创建一个dynamics 365 CRM online plugin (七)
    创建一个dynamics 365 CRM online plugin (六)
    创建一个dynamics 365 CRM online plugin (五)
    使用User Primary Email作为GUID的问题
    怎样Debug Dynamics 365 CRM Plugin
  • 原文地址:https://www.cnblogs.com/wang-xiaohui/p/8157995.html
Copyright © 2011-2022 走看看