SQL数据库备份与恢复

来源:互联网 发布:tcp 是不是解析域名 编辑:程序博客网 时间:2024/06/05 04:38

一、数据库备份
在sql server中,完全备份一个数据库我一般用数据库的分离、复制,即手动备份,使用时可以直接对复制的数据库进行附加即可。当然我们也可以用sql语句通过生成备份文件(后缀名为.bak)对数据库进行备份。备份方式分为以下几种(以数据库luoke为示例):

1.全量数据备份(Full Database Backup)
即备份整个数据库,恢复时恢复所有。操作简单,易实施,但数据量太大,非常耗时。

BACKUP DATABASE luoke TO  DISK = N'H:\DataBackup\luoke.diff' WITH  DIFFERENTIAL , NOFORMAT, NOINIT,  NAME = N'luoke-Differential Database Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10

2.增量数据备份(Differential Backups)
即以某个起始时间点的全量数据为基础,备份该时间点以后的数据。而起始时间点的全量数据,就是通过全量备份的数据。

BACKUP DATABASE luoke TO  DISK = N'H:\DataBackup\luokeD.bak' WITH  DIFFERENTIAL , NOFORMAT, NOINIT,  NAME = N'luokeD-Differential Database Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10

3.日志备份(Transaction Log Backup)
先做一次全量数据备份,以后每天做一次当天的备份,进行日志备份时的必须要做的事:
1)有一个全库备份文件 (aaa.bak)
2)有日志备份文件 (aaa.log)
3)在库备份文件时间-日志备份文件时间间隔内,日志未被截断过

BACKUP LOG luoke TO  DISK = N'H:\DataBackup\luoke.trn' WITH NOFORMAT, NOINIT,  NAME = N'luoke-Transaction Log  Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10

二、数据库恢复

恢复一个全数据库备份,注意需要使用with norecovery, 如果还有其他差异或增量备份,则逐个进行恢复,命令一样。

--完全恢复restore database luoke_newfrom disk='H:\DataBackup\luoke.bak'with norecovery,REPLACE ,          --使数据库处于不可用还原状态,以便还原后续数据。move 'luoke' to 'H:\DataBase\luoke_new.mdf',move 'luoke_log' to 'H:\DataBase\luoke_new.ldf'--增量恢复restore database luokefrom disk='H:\DataBackup\luoke.diff'with norecovery--日志恢复restore database luokefrom disk='H:\DataBackup\luoke.trn'with norecovery--恢复刚做的日志备份,指定恢复时间点到误操作之前的时刻 restore log luokefrom disk='H:\DataBackup\luoke.trn'with recovery,stopat='2017-5-25 10:14:08 132';--如果恢复时间点不对,再按照以下步骤,重设时间点。use masterrestore database luoke from disk= 'H:\DataBackup\luoke.bak' with norecovery,replace --覆盖日志内容restore log luoke from disk= 'H:\DataBackup\luoke.bak' with stopat= '2017-5-25 10:16:29' 
原创粉丝点击