完全备份、数据库恢复模型对日志备份和差异备份的影响

时间:2021-01-13 14:08:23
CREATE DATABASE db
GO

--1. 无完全备份时,无法进行差异备份
BACKUP DATABASE db TO DISK='c:\db.bak' WITH FORMAT,DIFFERENTIAL
/*--收到错误
服务器: 消息 3035,级别 16,状态 1,行 2
无法执行数据库 'db' 的差异备份,因为不存在当前数据库备份。请去掉 WITH DIFFERENTIAL 选项后重新发出 BACKUP DATABASE,以执行数据库的完整备份。
--*/
GO

DROP DATABASE db
GO


/*=========================================================*/


--2. 无完全备份时,无法进行日志备份
CREATE DATABASE db
GO

BACKUP LOG db TO DISK='c:\db.bak' WITH FORMAT
/*--收到信息
没有当前的数据库备份。此日志备份不能用于前滚先前的数据库备份。
--*/
GO

DROP DATABASE db
GO


/*===========================================================*/


--3. 数据库恢复模型为 SIMPLE 时,不允许使用 BACKUP LOG 语句
--数据库恢复模型为简单时,无法进行日志备份
ALTER DATABASE pubs SET RECOVERY SIMPLE
BACKUP LOG pubs TO DISK='c:\a.bak' WITH FORMAT
/*--收到错误信息
服务器: 消息 4208,级别 16,状态 1,行 3
当恢复模型为 SIMPLE 时,不允许使用 BACKUP LOG 语句。请使用 BACKUP DATABASE 或用 ALTER DATABASE 更改恢复模型。
--*/
GO

--数据库恢复模型不为简单时,才能进行日志备份
ALTER DATABASE pubs SET RECOVERY FULL
BACKUP LOG pubs TO DISK='c:\a.bak' WITH FORMAT