数据库的备份与恢复是对数据库操作的基本要求,从新学习一下数据库备份与恢复。
数据的备份的范围可以是完整的数据库、部分数据库或者一组文件或文件组,一般对于SQL Server来说都支持完整备份和差异备份。
完整备份:包括特定数据库(或者一组特定的文件组或文件)中的所有数据,以及可以恢复这些数据的足够的日志。
差异备份:基于数据的最新完整备份。这称为差异的基准或者差异基准。差异基准是读/写数据的完整备份。差异备份仅包括自建立差异基准后发生更改的数据。通常,建立基准备份之后很短时间内执行的差异备份比完整备份的基准更小,创建速度也更快。因此,使用差异备份可以加快进行频繁备份的速度,从而降低数据丢失的风险。通常,一个差异基准会由若干个相继的差异备份使用。还原时,首先还原完整备份,然后再还原最新的差异备份。
1、创建完整数据库备份
完整数据库备份应在单个操作中创建,并通常计划为按设定的间隔执行。
创建完整数据库备份所要求的 BACKUP语法是:
BACKUP DATABASE database_name TO backup_device
1、数据库备份到磁盘
'C:\AdventureWorks.Bak'
USE AdventureWorks
GO
BACKUP DATABASE AdventureWorks
TO DISK = 'C:\MSSQL\BACKUP\AdventureWorks.Bak'
WITH FORMAT,
NAME = 'Full Backup of AdventureWorks'
GO
-- Optionally, create a logical backup device,
-- AdventureWorks_Backup, for this backup file.
USE master
EXEC sp_addumpdevice 'disk', 'AdventureWorks_Backup',
'C:\MSSQL\BACKUP\AdventureWorks.Bak'
2、数据库备份到磁带
USE MyAdvWorks
GO
BACKUP DATABASE MyAdvWorks
TO TAPE = '\\.\Tape0'
WITH FORMAT,
NAME = 'Full Backup of MyAdvWorks'
GO
-- Optionally, create a logical backup device,
-- AdventureWorks_Backup, for this backup tape.
USE master
GO
EXEC sp_addumpdevice 'tape', 'MyAdvWorks_Bak', '\\.\tape0'
2、创建数据库差异备份(创建数据库差异备份前要对数据库备份,否则不能创建数据库差异备份)
-- Create a full database backup first.
BACKUP DATABASE MyAdvWorks
TO MyAdvWorks_1
WITH INIT
GO
-- Time elapses.
-- Create a differential database backup, appending the backup
-- to the backup device containing the full database backup.
BACKUP DATABASE MyAdvWorks
TO MyAdvWorks_1
WITH DIFFERENTIAL
GO
3、还原数据库、还原差异备份的数据库
1)还原完整的数据库
USE master
GO
RESTORE DATABASE AdventureWorks
FROM TAPE = '\\.\Tape0'-------数据库备份
GO
2)还原差异备份的数据库
(1)执行 RESTORE DATABASE 语句并指定 NORECOVERY 子句,以还原在差异数据库备份之前执行的完整数据库备份(完整备份见上)
(2)执行 RESTORE DATABASE 语句以还原差异数据库备份
RESTORE DATABASE MyAdvWorks
FROM MyAdvWorks_1
WITH NORECOVERY
GO
RESTORE DATABASE MyAdvWorks
FROM MyAdvWorks_1
WITH FILE = 2,
RECOVERY
GO