• SQL Server 2012 备份与还原详解


    在这里插入图片描述

    本文将演示使用SSMS数据库管理工具进行数据库备份及还原的详细步骤,希望对你有帮助。

    预备知识

    数据库备份

       数据库备份,即从SQL Server 数据库或其事务日志中将数据或日志记录复制到相应的设备,以创建数据副本或事务日志副本。数据还原用于将指定 SQL Server 备份中的所有数据和日志复制到指定数据库,然后通过应用记录的更改使该数据在时间上向前移动,以回滚备份中记录的所有事物。
        
        设计一个好的备份和还原策略需考虑多方面的因素,包括备份内容、备份计划、备份介质、备份设备、备份类型和恢复模式。在 SQL Server 2012 系统中,常见的备份类型有完整备份、差异备份、事务日志备份、文件和文件组备份

    • 完整备份:将数据库的数据全部备份。

    • 差异备份:将上一次备份后到现在对数据的修改进行备份。因此差异备份不能单独使用,只能先还原上一次的完整备份后,才能还原差异备份,当有多个差异备份时,只需要选择指定日期的差异备份文件即可,不需要逐个还原在此期间的差异备份。
         
       “恢复模式(Recovery model)”是一种数据库属性,它控制如何记录事务、事务日志是否需要或允许备份,以及可以使用哪些类型的还原操作。有三种恢复模式:简单恢复模式、完整恢复模式和大容量日志恢复模式。通常情况下,数据库使用简单恢复模式或完整恢复模式。

    • 简单恢复模式:数据库记录大多数事务,并不会记录所有的事务,数据库在备份之后,自动截断事务日志,即把不活动的事务日志删除。因此,不支持事务日志备份,也不能恢复到出现故障的时间点,具有较高的安全风险,建议只有对数据安全性要求不高的数据库使用该模式。

    • 完整恢复模式:数据库完整地记录了所有的事务,并保留所有事务的详细日志。支持恢复到出现故障的时间点。该模式可在最大范围内防止出现故障时丢失数据,为数据安全提供了全面的保护。建议对数据安全性、可靠性要求高的数据库使用该恢复模式。

    • 大容量日志恢复模式:数据库不会对所有事务做完整详细的记录,只对大容量操作做最少的记录。通常情况下,只有在要进行大容量操作之前,才改用该恢复模式,大容量操作结束之后,再设置回原来的恢复模式。

    创建备份设备

      在 SQL Server 2012 中,数据库备份设备分为物理备份设备逻辑备份设备

    • 物理备份设备是指保存备份数据的操作系统所识别的磁带或磁盘文件。
    • 逻辑备份设备是指数据库系统所识别的逻辑对象,是指向特定物理设备的可选用户定义名称,是物理备份设备的一个逻辑别名,别名名称必须唯一。

    使用SSMS工具创建备份设备

    展开数据库实例,打开“Server Objects”,右击“Backup Devices”,选择“New Backup Devices” 。

    在这里插入图片描述

    在备份设备窗口中,输入备份设备名称,选择备份设备路径和文件名,点击OK,完成备份设备的创建。

    在这里插入图片描述

    备份设备创建成功

    在这里插入图片描述

    使用SQL方式创建备份设备

    语法格式:

    EXEC sp_addumpdevice <存储类型> ,<备份设备逻辑名>, <物理文件路径>
    
    

    使用示例:

    use master
    go
    EXEC sp_addumpdevice 'disk' 'studyDB_backup' 'F:Program FilesMicrosoft SQL ServerMSSQL11.STUDRMSSQLBackupstudyDB_backup.bak'
    


    使用SSMS工具备份与还原

    完整备份与还原

    本文将对新建数据库TEST01 进行备份演示。

    建表

    为了便于还原效果的验证,现在数据库中新建一张表 dbo.classs 。

    在这里插入图片描述

    查询数据如下:

    select * from dbo.class
    

    在这里插入图片描述

    完整备份

    使用SSMS工具完整备份数据库TEST01,步骤如下:

    1)右击数据库 TEST01 -》选择 Tasks -》选择 Back Up 。

    在这里插入图片描述

    2)在备份数据库弹出框中选择 Backup type为 Full -》点击 Remove 删除系统生成的目标文件。

    在这里插入图片描述

    3)点击 Add按钮弹出选择备份目标对话框

    在这里插入图片描述

    4)在选择备份目标弹出框中点击选择备份路径 -》输入数据备份文件名称 -》点击OK

    在这里插入图片描述

    5)Options 保留默认配置 -》点击OK

    在这里插入图片描述

    6)在备份数据库弹出框点击OK

    在这里插入图片描述

    至此,已完成数据库 TEST01 的完整备份。

    删除数据库

    7)右击数据库 TEST01 -》选择 Delete 。

    在这里插入图片描述

    8)点击 OK 删除数据库。

    在这里插入图片描述

    注意:在删库之前需要断开其他连接,否则会报如下错误:

    在这里插入图片描述

    9)数据库 TEST01 已删除

    在这里插入图片描述

    完整备份还原

    使用SSMS工具利用完整备份还原数据库TEST01,步骤如下:

    10)右击Databases -》选择 Restore Database 。

    在这里插入图片描述

    11)Source 选择 Device -》点击 ... -》在弹出的窗口中 点击 Add 添加用来恢复的备份文件。

    在这里插入图片描述

    12)选择备份文件 -》点击OK

    在这里插入图片描述

    13)可看到备份文件已添加成功 -》点击OK

    在这里插入图片描述

    14)General 页配置完成后如下图所示

    在这里插入图片描述

    15)Files 页显示如下图

    在这里插入图片描述

    16)在 Options 页,注意Recovery state 选择 “RESTORE WITH RECOVERY” (默认选项) -》点击OK

    在这里插入图片描述

    17)在还原数据库弹出框点击确定

    在这里插入图片描述

    至此,数据库 TEST01 还原完成。

    在这里插入图片描述

    数据检查

    select * from dbo.class
    

    在这里插入图片描述

    差异备份

    建表

    现复制dbo.class 表,命名为 dbo.classbak

    select * into dbo.classbak from dbo.class
    

    在这里插入图片描述

    差异备份

    使用SSMS工具差异备份数据库TEST01,步骤如下:

    18)右击数据库 TEST01 -》选择 Tasks -》选择 Back Up 。

    在这里插入图片描述

    19)在备份数据库弹出框中选择 Backup type为 Differential -》点击 Remove 删除系统生成的目标文件。

    在这里插入图片描述

    20)点击 Add按钮弹出选择备份目标对话框

    在这里插入图片描述

    21)在选择备份目标弹出框中点击选择备份路径 -》输入数据备份文件名称 -》点击OK

    在这里插入图片描述

    配置完成后,Genetal 页如下图所示:

    在这里插入图片描述

    22)Options 保留默认配置 -》点击OK

    在这里插入图片描述

    23)在备份数据库弹出框点击OK

    在这里插入图片描述

    删除数据库

    说明:为了做一次完整的恢复过程演示,先删除刚才还原的数据库 TEST01。
    步骤见 7)~ 9)

    差异备份还原

    说明:在做差异备份前需先做完整备份的还原,否则会报如下错误:
    在这里插入图片描述

    下面做正确还原步骤的演示

    完整备份还原

    24)右击Databases -》选择 Restore Database 。

    在这里插入图片描述

    25)Source 选择 Device -》点击 ... -》在弹出的窗口中 点击 Add 添加用来恢复的备份文件。

    在这里插入图片描述

    26)选择备份文件 -》点击OK

    在这里插入图片描述

    27)可看到备份文件已添加成功 -》点击OK

    在这里插入图片描述

    28)General 页配置完成后如下图所示

    在这里插入图片描述

    29)Files 页显示如下图

    在这里插入图片描述

    30)在 Options 页,注意Recovery state 选择 “NORESTORE WITH RECOVERY” -》点击OK

    在这里插入图片描述

    31)在还原数据库弹出框点击确定

    在这里插入图片描述

    此时,数据库处于 Restoring 状态,不可用,等待着下一步还原操作。

    在这里插入图片描述

    差异备份还原

    32)右击数据库 TEST01 -》选择 Tasks -》选择 Restore -》选择 Database 。

    在这里插入图片描述

    33)Source 选择 Device -》点击 ... -》在弹出的窗口中 点击 Add 添加用来恢复的备份文件。

    在这里插入图片描述

    34)选择备份文件 -》点击OK

    在这里插入图片描述

    35)可看到备份文件已添加成功 -》点击OK

    在这里插入图片描述

    36)General 页配置完成后如下图所示

    在这里插入图片描述

    37)Files 页显示如下图

    在这里插入图片描述

    38)在 Options 页,注意Recovery state 选择 “RESTORE WITH RECOVERY” (默认选项) -》点击OK

    在这里插入图片描述

    39)在还原数据库弹出框点击确定

    在这里插入图片描述

    至此,数据库 TEST01 还原完成。

    在这里插入图片描述

    数据检查

    select * from dbo.class
    
    select * from dbo.classbak
    

    结果均如下:

    在这里插入图片描述

    数据无误!

    事务日志备份

    现添加表格 dbo.classbak02

    select * into dbo.classbak02 from dbo.class
    

    使用SSMS工具对数据库TEST01做事务日志备份,步骤如下:

    40)右击数据库 TEST01 -》选择 Tasks -》选择 Back Up 。

    在这里插入图片描述

    41)在备份数据库弹出框中选择 Backup type为 Transaction Log -》点击 Remove 删除系统生成的目标文件。

    在这里插入图片描述

    42)点击 Add按钮弹出选择备份目标对话框

    在这里插入图片描述

    43)在选择备份目标弹出框中点击选择备份路径 -》输入数据备份文件名称 -》点击OK

    在这里插入图片描述

    44)General 页配置完成后如下图所示

    在这里插入图片描述

    45)Options 保留默认配置 -》点击OK

    在这里插入图片描述

    46)在备份数据库弹出框点击OK

    在这里插入图片描述

    事务日志备份还原

    需要先做完整备份还原和差异备份还原后,再做事务日志还原

    全备份还原

    步骤同 24)~ 31),这里不做赘述。

    差异备份还原

    47)右击数据库 TEST01 -》选择 Tasks -》选择 Restore -》选择 Database 。

    在这里插入图片描述

    48)Source 选择 Device -》点击 ... -》在弹出的窗口中 点击 Add 添加用来恢复的备份文件。

    在这里插入图片描述

    49)选择备份文件 -》点击OK

    在这里插入图片描述

    50)可看到备份文件已添加成功 -》点击OK

    在这里插入图片描述

    51)General 页配置完成后如下图所示

    在这里插入图片描述

    52)Files 页显示如下图

    在这里插入图片描述

    53)在 Options 页,注意Recovery state 选择 “RESTORE WITH NORECOVERY” (默认选项) -》点击OK

    在这里插入图片描述

    54)在还原数据库弹出框点击确定

    在这里插入图片描述

    此时,数据库处于 Restoring 状态,不可用,等待着下一步还原操作。

    在这里插入图片描述

    事务日志还原

    55)右击数据库 TEST01 -》选择 Tasks -》选择 Restore -》选择 Database 。

    在这里插入图片描述

    56)Source 选择 Device -》点击 ... -》在弹出的窗口中 点击 Add 添加用来恢复的备份文件。

    在这里插入图片描述

    57)选择备份文件 -》点击OK

    在这里插入图片描述

    58)可看到备份文件已添加成功 -》点击OK

    在这里插入图片描述

    59)General 页配置完成后如下图所示

    在这里插入图片描述

    60)在 Options 页,注意Recovery state 选择第一个选项 “RESTORE WITH NORECOVERY” (默认选项) -》点击OK

    在这里插入图片描述

    61)在还原数据库弹出框点击确定

    在这里插入图片描述

    至此,数据库 TEST01 还原完成!

    验证数据

    在这里插入图片描述

    select * from dbo.class
    
    select * from dbo.classbak
    
    select * from dbo.classbak02
    

    结果均如下:

    在这里插入图片描述

    数据无误!

    补充:以上示例中,备份文件的路径可选择文章前面创建的备份设备。
       如 4)中,Destinations on disk 可选择 Backup device 。


    使用 SQL 备份与还原

    使用SQL方式完整备份与还原

    语法格式:

    --备份数据库
    USE master
    GO
    BACKUP DATABASE <数据库> TO <备份设备>
    
    --还原数据库
    USE master
    GO
    RESTORE DATABASE <数据库> FROM <备份设备>
    
    

    --备份数据库
    USE master
    GO
    BACKUP DATABASE <数据库> TO disk='目录'
    
    --还原数据库
    USE master
    GO
    RESTORE DATABASE <数据库> FROM disk='目录'
    
    

    使用示例:

    --备份数据库
    USE master
    GO
    BACKUP DATABASE TEST01 TO studyDB_backup
    
    --还原数据库
    USE master
    GO
    RESTORE DATABASE TEST01 FROM studyDB_backup
    

    --备份数据库
    USE master
    GO
    BACKUP DATABASE TEST01 TO disk='F:ackup	est01_full.bak'
    
    --还原数据库
    USE master
    GO
    RESTORE DATABASE TEST01 FROM disk='F:ackup	est01_full.bak'
    

    使用SQL方式差异备份与还原

    语法格式:

    --数据库差异备份
    USE master
    GO
    BACKUP DATABASE <数据库> TO <备份设备>
    WITH DIFFERENTIAL
    
    --数据库还原
    --备份集编号可在对应的备份设备右击选择属性,查看备份介质即可找到备份集的编号
    USE master
    GO
    RESTORE DATABASE <数据库> FROM <备份设备>
    WITH FILE=<备份集标号>,NORECOVERY  --NORECOVERY  表示还原未恢复
    GO
    ...
    GO
    RESTORE DATABASE  <数据库> FROM <备份设备>
    WITH FILE=<备份集标号>,RECOVERY --RECOVERY  表示还原已恢复
    
    

    --数据库差异备份
    USE master
    GO
    BACKUP DATABASE <数据库> TO disk='目录' WITH DIFFERENTIAL
    
    --数据库还原
    USE master
    GO
    RESTORE DATABASE <数据库> FROM disk='目录' WITH NORECOVERY  --NORECOVERY  表示还原未恢复
    GO
    ...
    GO
    RESTORE DATABASE  <数据库> FROM disk='目录' WITH RECOVERY --RECOVERY  表示还原已恢复
    
    

    使用示例:

    --数据库差异备份
    USE master
    GO
    BACKUP DATABASE TEST01 TO studyDB_backup WITH DIFFERENTIAL
    
    --数据库还原
    USE master
    GO
    RESTORE DATABASE TEST01 FROM studyDB_backup WITH FILE=1,NORECOVERY 
    GO
    RESTORE DATABASE TEST01 FROM studyDB_backup WITH FILE=2,RECOVERY
    
    

    --数据库差异备份
    USE master
    GO
    BACKUP DATABASE TEST01 TO disk='F:ackup	est01_diff.bak' WITH DIFFERENTIAL
    
    --数据库还原
    USE master
    GO
    RESTORE DATABASE TEST01 FROM disk='F:ackup	est01_full.bak' WITH NORECOVERY 
    GO
    RESTORE DATABASE TEST01 FROM disk='F:ackup	est01_diff.bak' WITH RECOVERY
    
    

    使用SQL方式事务日志备份与还原

    语法格式:

    --备份事务日志
    USE master
    GO
    BACKUP LOG <数据库> TO <备份设备>
    
    --恢复数据库备份
    --备份集编号可在对应的备份设备右击选择属性,查看备份介质即可找到备份集的编号
    USE master
    GO
    RESTORE DATABASE <数据库> FROM <备份设备>
    WITH REPLACE,FILE=<备份集编号>,NORECOVERY   --NORECOVERY  表示还原未恢复
    GO
    ...
    GO
    RESTORE LOG <数据库> FROM <备份设备>
    WITH FILE=<备份集编号>,RECOVERY   --RECOVERY  表示还原已恢复
    
    

    --备份事务日志
    USE master
    GO
    BACKUP LOG <数据库> TO disk='目录'
    
    --恢复数据库备份
    USE master
    GO
    RESTORE DATABASE <数据库> FROM disk='目录' WITH NORECOVERY   --NORECOVERY  表示还原未恢复
    GO
    ...
    GO
    RESTORE LOG <数据库> FROM disk='目录' WITH RECOVERY   --RECOVERY  表示还原已恢复
    
    

    使用示例:

    --备份事务日志
    USE master
    GO
    BACKUP LOG TEST01 TO studyDB_backup
    
    --恢复数据库备份
    USE master
    GO
    RESTORE DATABASE  TEST01 FROM studyDB_backup
    WITH REPLACE,FILE=1,NORECOVERY   --NORECOVERY  表示还原未恢复
    GO
    RESTORE DATABASE  TEST01 FROM studyDB_backup
    WITH REPLACE,FILE=2,NORECOVERY   --NORECOVERY  表示还原未恢复
    GO
    RESTORE LOG  TEST01 FROM studyDB_backup
    WITH FILE=3,RECOVERY   --RECOVERY  表示还原已恢复
    
    

    --备份事务日志
    USE master
    GO
    BACKUP LOG TEST01 TO disk='F:ackup	est01_tran.trn' 
    
    --恢复数据库备份
    USE master
    GO
    RESTORE DATABASE  TEST01 FROM disk='F:ackup	est01_full.bak' WITH REPLACE,FILE=1,NORECOVERY   --NORECOVERY  表示还原未恢复
    GO
    RESTORE DATABASE  TEST01 FROM disk='F:ackup	est01_diff.bak' WITH NORECOVERY   --NORECOVERY  表示还原未恢复
    GO
    RESTORE LOG  TEST01 FROM 'F:ackup	est01_tran.trn' WITH RECOVERY   --RECOVERY  表示还原已恢复
    
    

    在这里插入图片描述


    参考链接:https://blog.csdn.net/gengkui9897/article/details/95186692

  • 相关阅读:
    SpringBoot入门之基于XML的Mybatis
    SpringBoot入门之基于注解的Mybatis
    自定义Fiddler插件二
    SpringBoot入门之集成JSP
    SpringBoot入门之Thymeleaf的使用
    自定义Fiddler插件一
    SpringBoot入门之简单配置
    Eclipse引入SpringBoot
    SpringMVC之数据传递三Ajax与Controller交互
    SpringMVC之拦截器实现登录验证
  • 原文地址:https://www.cnblogs.com/ruishine/p/14634368.html
Copyright © 2020-2023  润新知