跳至内容

备份与恢复

数据可能因硬件故障、软件故障、病毒、误操作、自然灾害、盗窃等原因丢失或被破坏。备份就是对数据库或事务日志进行拷贝并记录数据状态,以便数据库遭破坏时能及时恢复。这篇讲备份权限、备份方式、恢复模式,以及备份/恢复的命令。

备份权限

以下角色的成员具有备份数据库的权限:

  • sysadmin
  • db_owner
  • db_backupoperator

备份方式

方式内容特点依赖
完全备份所有数据库及数据库对象速度慢、时间长、占空间大,频率通常比其他两种低
事务日志备份上次日志备份节点之后的事务日志速度快、占空间少,操作复杂必须有完整数据库备份
差异备份当前数据库与上一次完全备份之间的差异部分速度一般、时间短、占空间少,需要经常备份必须有完整数据库备份

恢复模式

数据库的恢复模式决定了能做哪种备份、能恢复到哪个时间点:

恢复模式说明
简单恢复(Simple)不保留事务日志(自动截断),不允许做日志备份,只能恢复到最近一次完全/差异备份
完整恢复(Full)完整保留事务日志,可配合日志备份恢复到任意时间点,数据安全性最高
大容量日志恢复(Bulk-logged)对大容量操作(如 BULK INSERT)做最小日志记录,介于简单与完整之间

备份设备

备份文件常用 .bak 后缀。备份设备可图形化创建,也可用 T-SQL:

-- 创建备份设备
sp_addumpdevice '磁盘类型', '备份设备逻辑名称', '备份设备物理名称'

-- 删除备份设备
EXEC sp_dropdevice '备份设备逻辑名称', 'delfile'

备份命令

-- 完全备份(init 重写 / noinit 追加,默认 noinit)
BACKUP DATABASE 数据库名 TO 永久设备逻辑名 WITH INIT
BACKUP DATABASE 数据库名 TO 永久设备逻辑名 WITH NOINIT

-- 差异备份
BACKUP DATABASE 数据库名 TO 永久备份设备逻辑名 WITH DIFFERENTIAL

-- 日志备份(恢复模式为简单时不允许做日志备份)
BACKUP LOG 数据库名 TO 永久备份设备逻辑名 WITH INIT

-- 备份到临时设备
BACKUP DATABASE 数据库名 TO DISK = '物理路径'

恢复命令

-- 从完全备份恢复
RESTORE DATABASE 数据库名 FROM 永久备份设备逻辑名

-- 恢复日志备份
RESTORE LOG 数据库名 FROM 永久备份设备逻辑名

-- 从临时设备恢复
RESTORE DATABASE 数据库名 FROM DISK = '物理路径'

-- 分步恢复
RESTORE DATABASE 数据库名 FROM 永久备份设备名 WITH FILE = n, RECOVERY | NORECOVERY

分步恢复参数说明:

  • FILE = n:备份设备中的第几个文件(从 1 开始数)。
  • RECOVERY:使数据库可以运行,但无法再还原其他事务。
  • NORECOVERY:数据库不运行,但可以继续还原其他事务(用于先恢复完全备份、再依次恢复差异/日志备份的场景)。

查看备份文件信息:

RESTORE HEADERONLY FROM 设备名
最后更新于