SQL Server备份恢复、导入导出
- 格式:docx
- 大小:212.62 KB
- 文档页数:11
SQL Server备份恢复说明备份BACKUP:该语句备份整个数据库、差异备份数据库、备份特定的文件或文件组及备份事务日志。
1.备份整个数据库备份整个数据库的BACKUP语句的语法格式为:BACKUP DATABASE { database_name | @database_name_var }/*被备份的数据库名*/TO <backup_device> [ ,...n] /*指出备份目标设备*/[ 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 masterBACKUP DATABASE XSCJ TO 'e:\temp\tmpxscj.ba’【例】使用逻辑名test1创建一个命名的备份设备,并将数据库XSCJ完全备份到该设备。
USE masterEXEC 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 masterEXEC sp_addumpdevice 'disk','test2','e:\db_temp\test2.bak'EXEC sp_addumpdevice 'disk','test3','e:\db_temp\test3.bak'BACKUP DATABASE XSCJ TO test2,test3NAME = 'xscjbk' //NAME制定备份集名称本例将XSCJ数据库备份到两个磁盘设备test2和test3上,执行结果如图8.9所示。
2. 差异备份数据库对于需频繁修改的数据库,进行差异备份可以缩短备份和恢复的时间。
注意只有当已经执行了完全数据库备份后才能执行差异备份。
进行差异备份时,SQL Server将备份从最近的完全数据库备份后数据库发生了的变化的部分。
进行差异备份的BACKUP语句的语法格式为:BACKUP DATABASE { database_name | @database_name_var }TO <backup_device>[ ,… n ][ WITH[ [ , ] DIFFERENTIAL ]/*其余选项与相数据库的完全备份同*/]其中DIFFERENTIAL选项是表示差异备份的关键字。
BACKUP语句其余项的功能与数据库完全备份的BACKUP相同。
SQL Server执行差异备份时注意下列几点:(1)若在上次完全数据库备份后,数据库的某行被修改了,则执行差异备份只保存最后依次改动的值;(2)为了使差异备份设备与完全数据库备份的设备相互能区分开来,应使用不同的设备名。
以下示例将创建临时备份设备并在所创建的临时备份设备上进行差异备份。
BACKUP DATABASE XSCJ TODISK ='e:\db_temp\xscjbk.bak'WITH DIFFERENTIAL3. 备份数据库文件或文件组当数据库非常大时,可以进行数据库文件或文件组的备份,其语法格式为:BACKUP DATABASE { database_name | @database_name_var}<file_or_filegroup> [ ,...n] /*指定文件或文件组名*/TO <backup_device>[ ,...n][ 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 TTFILE = t1 TO t2backupBACKUP LOG TT TO tbackuplog本例中的语句BACKUP LOG的作用是备份事务日志,将在下一部分讲述。
4. 事务日志备份备份事务日志用于记录前一次的数据库备份或事务日志备份后数据库所作出的改变。
事务日志备份需在一次完全数据库备份后进行,这样才能将事务日志文件与数据库备份一起用于恢复。
当进行事务日志备份时,系统进行下列操作:(1)将事务日志中从前一次成功备份结束位置开始到当前事务日志的结尾处的内容进行备份。
(2)标识事务日志中活动部分的开始,所谓事务日志的活动部分指从最近的检查点或最早的打开位置开始至事务日志的结尾处。
BACKLOG语句的语法为:BACKUP LOG { database_name | @database_name_var}/* 指出被备份的数据库名*/TO <backup_device> [ ,...n] /*指出备份目标*/[ 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} ][ [, ] NO_TRUNCATE ][ [, ] { NORECOVERY | STANDBY = undo_file_name} ][ [, ] { NOREWIND | REWIND } ][ [, ] { NOSKIP | SKIP } ][ [, ] { NOUNLOAD | UNLOAD } ][ [, ] RESTART ][ [, ] STATS [ = percentage] ]]BACKUP LOG语句指定只备份事务日志,所备份的日志内容是从上一次成功执行了事务日志备份之后到当前事务日志的末尾。