SQL Server备份恢复、导入导出
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQL Server备份恢复说明
备份BACKUP:
该语句备份整个数据库、差异备份数据库、备份特定的文件或文件组及备份事务日志。
1.备份整个数据库
备份整个数据库的BACKUP语句的语法格式为:
BACKUP DATABASE { database_name | @database_name_var }/*被备份的数据库名*/
TO
[ WITH
[ BLOCKSIZE = { blocksize | @blocksize_variable} ] /*块大小*/
[ [ , ] DESCRIPTION = { 'text'| @text_variable} ] /*备份集的自由格式文本*/
[ [ ,] EXPIREDATE = { date| @date_var} /*备份集到期和允许被重写的日期*/
| RETAINDAYS ={ days | @days_var} ]
[ [, ] PASSWORD = { password| @password_variable} ]
[ [, ] FORMAT | NOFORMAT ]
[ [ , ] { INIT | NOINIT } ] /*指定是覆盖还是追加*/
[ [, ] MEDIADESCRIPTION = { 'text'| @text_variable} ]
[ [, ] MEDIANAME = { media_name| @media_name_variable } ]
[ [, ] MEDIAPASSWORD = { mediapassword| @mediapassword_variable} ]
[ [, ] NAME = { backup_set_name | @backup_set_name_var} ]
[ [, ] { NOREWIND | REWIND } ]
[ [, ] { NOSKIP | SKIP } ]
[ [, ] { NOUNLOAD | UNLOAD } ]
[ [, ] RESTART ]
[ [, ] STATS [ = percentage] ]
]
例如,以下示例在磁盘上创建一个临时备份设备,它用来备份数据库XSCJ。
USE master
BACKUP DATABASE XSCJ TO 'e:\temp\tmpxscj.ba’
【例】使用逻辑名test1创建一个命名的备份设备,并将数据库XSCJ完全备份到该设备。
USE master
EXEC sp_addumpdevice'disk' , 'test1', 'e:\db_temp\test1.bak'
BACKUP DATABASE XSCJ TO test1
以下示例将数据库XSCJ完全数据库备份到备份设备test1,并覆盖该设备上原有的内容。
BACKUP DATABASE XSCJ TO test1 WITH INIT
以下示例将数据库XSCJ备份到备份设备test1上,执行追加的完全数据库备份,该设备上原有的备份内容都被保存。
BACKUP DATABASE XSCJ TO test1 WITH NOINIT
【例】将数据库XSCJ备份到多个备份设备。
USE master
EXEC sp_addumpdevice 'disk','test2','e:\db_temp\test2.bak'
EXEC sp_addumpdevice 'disk','test3','e:\db_temp\test3.bak'
BACKUP DATABASE XSCJ TO test2,test3
NAME = 'xscjbk' //NAME制定备份集名称
本例将XSCJ数据库备份到两个磁盘设备test2和test3上,执行结果如图8.9所示。
2. 差异备份数据库
对于需频繁修改的数据库,进行差异备份可以缩短备份和恢复的时间。注意只有当已经执行了完全数据库备份后才能执行差异备份。进行差异备份时,SQL Server将备份从最近的完全数据库备份后数据库发生了的变化的部分。
进行差异备份的BACKUP语句的语法格式为:
BACKUP DATABASE { database_name | @database_name_var }
TO
[ WITH
[ [ , ] DIFFERENTIAL ]
/*其余选项与相数据库的完全备份同*/
]
其中DIFFERENTIAL选项是表示差异备份的关键字。BACKUP语句其余项的功能与数据库完全备份的BACKUP相同。SQL Server执行差异备份时注意下列几点:
(1)若在上次完全数据库备份后,数据库的某行被修改了,则执行差异备份只保存最后依次改动的值;
(2)为了使差异备份设备与完全数据库备份的设备相互能区分开来,应使用不同的设备名。
以下示例将创建临时备份设备并在所创建的临时备份设备上进行差异备份。
BACKUP DATABASE XSCJ TO
DISK ='e:\db_temp\xscjbk.bak'WITH DIFFERENTIAL
3. 备份数据库文件或文件组
当数据库非常大时,可以进行数据库文件或文件组的备份,其语法格式为:
BACKUP DATABASE { database_name | @database_name_var}
TO
[ WITH
[ BLOCKSIZE = { blocksize | @blocksize_variable} ]
[ [, ] DESCRIPTION = { 'text'| @text_variable} ]
[ [,] EXPIREDATE = { date| @date_var}
| RETAINDAYS ={ days | @days_var} ]
[ [, ] PASSWORD = { password| @password_variable} ]
[ [, ] FORMAT | NOFORMAT ]
[ [, ] { INIT | NOINIT } ]
[ [, ] MEDIADESCRIPTION = { 'text'| @text_variable} ]
[ [, ] MEDIANAME = { media_name| @media_name_variable } ]
[ [, ] MEDIAPASSWORD = { mediapassword| @mediapassword_variable} ]
[ [, ] NAME = { backup_set_name | @backup_set_name_var} ]
[ [, ] { NOREWIND | REWIND } ]
[ [, ] { NOSKIP | SKIP } ]
[ [, ] { NOUNLOAD | UNLOAD } ]
[ [, ] RESTART ]
[ [, ] STATS [ = percentage] ]
]
注意:必须通过使用BACKUP LOG 提供事务日志的单独备份,才能使用文件和文件组备份来恢复数据库。
使用数据库文件或文件组备份时,要注意以下几点:
(1)必须指定文件或文件组的逻辑名;
(2)必须执行事务日志备份,以确保恢复后的文件与数据库的其它部分的一致性;
(3)应轮流备份数据库中的文件或文件组,以使数据库中的所有文件或文件组都定期得到备份;
(4)最多可以指定16个文件或文件组。
【例】设TT数据库有2个数据文件t1和t2,事务日志存储在文件tlog中。对其文件t1进行备份,假设备份设备t2backup和tbackuplog已存在。
BACKUP DATABASE TT
FILE = t1 TO t2backup
BACKUP LOG TT TO tbackuplog
本例中的语句BACKUP LOG的作用是备份事务日志,将在下一部分讲述。
4. 事务日志备份
备份事务日志用于记录前一次的数据库备份或事务日志备份后数据库所作出的改变。事务日志备份需在一次完全数据库备份后进行,这样才能将事务日志文件与数据库备份一起用于恢复。当进行事务日志备份时,系统进行下列操作:
(1)将事务日志中从前一次成功备份结束位置开始到当前事务日志的结尾处的内容进行备份。