日期:2014-05-16  浏览次数:20329 次

MS-SQL数据库备份和恢复
SQL备份与还原经典文档

SQL备份

1、SQL数据库恢复模型
1)完全恢复模型

(1)备份时要备份数据库的数据文件和日志文件
(2)还原时使用数据库的备份的数据文件副本和全部日志信息来恢复数据库。
(3)能还原全部数据,并可以将数据库恢复到任意指定的时刻。
(4)为保证实现即时点恢复,对数据库的所有*作都将完整地记入日志,这样,日志占用空间较大,对性能也有所影响。

(2)大容量日志记录恢复模型

(1)备份时要备份数据库的数据文件和日志文件
(2)还原时使用数据库的备份的数据文件副本和全部日志信息来恢复数据库。
(3)日志中不记录*作细节(如select into、create index等),而只记录*作的最终结果,因此占用日志空间小。
(4)只支持将数据库还原到事务日志备份的时刻,而不支持即时点恢复,因此可能产生数据丢失。

(3)简单恢复模型

(1)备份时只备份数据文件,还原时也用备份的数据文件恢复数据库。
(2)只能将数据恢复到数据文件备份的时刻,可能产生最多的数据丢失。
(3)不适于生产系统和大规模*作环境下选用。

alter database d1 set recovery simple     --设置数据库恢复模型
alter database d1 set recovery bulk_logged
alter database d1 set recovery full

2、备份设备

1)物理设备

disk:支持本地磁盘或者网络备份
tape:支持磁带机备份
name pipe:支持第三方备份软件

2)逻辑设备
---------------------------
永久备份文件:可以重复使用,应该在备份前创建。
临时备份文件:用于一次性备份,在备份时创建。
-------------------------------------------------
exec sp_addumpdevice 'disk','bak2','e:\back_device\bak2.bak' --创建永久磁盘备份设备
exec sp_addumpdevice 'disk','bak3','e:\back_device\bak3.bak'
----------------------------------
exec sp_addumpdevice 'disk','bak4','\\sv2\backup\bak4.bak' --创建网络永久磁盘备份设备
exec sp_addumpdevice 'disk','bak5','\\sv2\backup\bak5.bak'
----------------------------------
exec sp_dropdevice 'bak5'              --删除备份设备
----------------------------------
backup database d3 to bak3      --将数据库备份到备份设备
backup database d4 to bak4
----------------------------------
restore headeronly from bak2    --查看备份设备中的内容
----------------------------------
backup database d3 to disk='e:\back_file\d3.bak'    --将数据库备份到临时备份文件
backup database d4 to disk='e:\back_file\d4.bak'
----------------------------------
restore database d3 from bak3           --从备份设备还原数据库      
restore database d4 from disk='e:\back_file\d4.bak' --从备份文件还原数据库
----------------------------------
3、使用多个备份文件存储备份
----------------------------------
1)SQL可同时向多个备份文件进行写*作。如果把这些文件放到多个磁带机或磁盘中,则可提高备份速度。
2)这多个备份文件必须用同业型的媒体,并放到一个媒体集中。
3)媒体集中的文件必须同时使用,而不能单独使用。
4)可以通过format命令将媒体集重新划分,但原备份集中的数据不能再使用。
--------------------------------
backup database d4 to bak4,bak5,bak6 with medianame='bak456',format --备份D4并形成Media Set
backup database d3 to bak4      --失败,因Media set中文件必须同时使用
backup database d3 to bak4,bak5,bak6    --成功,将D3也备份到Media Set中
restore headeronly from bak4,bak5,bak6--查看Media Set中的备份内容
----------------------------------
backup database d4 to bak4 with medianame='bak4',format     --重新划分Media Set
backup database d3 to bak5,bak6 with medianame='bak56',format
----------------------------------
backup database d1 to bak1 with init     --with init重写备份设备中内容
backup database d2 to bak1 with noinit --with noinit将内容追加到备份设备中
restore headeronly from bak1
----------------------------------
4、备份的方法
----------------------------------
1)完全备份
-------------------------------------------
(1)是备份的基准。在做备份时第一次备份都建议使用完全备份。
(2)完全备份会备份数据库的所有数据文件、数据对象和数据。
(3)会备份事务日志中任何未提交的事务。因为已提交的事务已经写入数据文件中。
--------------------------------------------
backup database d1 to bak1 with init     --完全备份
backup database d1 to bak1 with noinit
----------------------------------
2)差异备份
---------------------------------------------
(1)基于完全备份。
(2)备份自最近一次完全备份以来的所有数据库改变。
(3)恢复时,只应用最近一次完全备份和最新的差异备份。
-----------------------------------------------
backup database d2 to