ITPub博客

首页 > Linux操作系统 > Linux操作系统 > SQL中数据备份总计(1)

SQL中数据备份总计(1)

原创 Linux操作系统 作者:litongbing 时间:2009-09-16 15:36:06 0 删除 编辑


--完全备份(备份数据库中所数据)
backup database pubs to disk = N'c:\a.bak'

--还原全备份
restore database pubs from disk = N'c:\a.bak'

--差异备份(指上次完全备份后,发生更改的数据)
backup database pubs to disk = N'c:\b.bak' with differential

--差异备份还原
--(1)还原全备份
restore database pubs from disk= N'c:\a.bak' with norecovery
--(上面命令还原全备后不做回滚打操作,以便做后续差异还原)
--(2)还原差异备份
restore database pubs from disk= N'c:\b.bak' with recovery

--注意这里的差异备份必须在最少完成了一次全备份的情况下,且上次全备份与当前备份的数据变化很大的情况下能进行;
--备份还原也必须在还原全备份的基础上还原

--日志备份(是指自上次备份后对数据库执行的所有事务的一系列记录.这里上次备份可指完全备份、差异备份、日志备份)
backup log pubs to disk = N'c:\log.bak'

--日志备份还原
--(1)还原全备份
restore database pubs from disk = N'c:\a.bak' with norecovery
--(2)如做了差异备份,则先还原差异备份
restore database pubs from disk = N'c:\b.bak' with norecovery
--(3)还原日志备份
restore log pubs from disk= N'c:\log.bak' with recovery

--数据文件或文件组备份
--在数据文件或文件组备份之前,要熟练掌握数据库的备份和还原方法、必须清楚数据库文件结构,否则还原操作往往会失败

--创建db数据库
create database db
on primary(
    name = 'db_data',
    filename ='d:\backup\db_data.mdf',
    size = 500,
    maxsize = 1000
),
filegroup db_fg1(
    name = 'db_fg1_data',
    filename = 'd:\backup\db_fg1_data.ndf',
    size = 200,
    maxsize = 500
),
filegroup db_fg2(
    name ='db_fg2_data',
    filename ='d:\backup\db_fg2_data.ndf',
    size = 200,
    maxsize = 500
)
log on
(
    name = 'db_log',
    filename = 'd:\backup\db_log1.ldf',
    size = 200,
    maxsize = 500
)

go

use db
--在不同文件组上创建表
create table tb_a
(
    id   int
)

create table tb_b
(
   id   int
)on db_fg1

create table tb_c
(
   id   int
)on db_fg2

go

--备份文件组db_fg1(文件组还原必须同时还原primary文件,故需要同时备份)
backup database db
    filegroup = 'primary',
    filegroup = 'db_fg1'
 to disk = 'd:\backup\db_fg1.bak'
with format

go 

use master

drop database db

--从文件组备份中恢复数据
restore database db
  filegroup ='primary',
  filegroup = 'db_fg1'
from disk = 'd:\backup\db_fg1.bak'


use db
select count(*) from db.dbo.tb_b


--注:在文件组还原后,容易导致出现odbc sqlstate:42000错误
--查询数据文件以及文件大小
restore filelistonly from disk='d:\backup\db_fg1.bak'


--物理备份和逻辑备份

--物理备份设备是操作系统用来标识备份设备的名称
--逻辑备份设备是用来标识物理备份设备的别名或公用名称
exec sp_addumpdevice
  @devtype = N'disk',
  @logicalname = N'pubs_backup',
  @physicalname = N'd:\backup\pubs.bak'

--使用逻辑备份设备
backup database pubs
  to pubs_backup

--使用物理备份设备
backup database puds
  to disk = N'd:\backup\pubs.bak'

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/20948385/viewspace-614802/,如需转载,请注明出处,否则将追究法律责任。

下一篇: TNS-04404问题
请登录后发表评论 登录
全部评论

注册时间:2009-05-13

  • 博文量
    59
  • 访问量
    203678