SQL server 的备份和还原(语句)
一、备份的分类和语句
1.完整数据库备份
故名思意,完整数据库备份包括完整的数据库信息。它包括数据库的数据文件和备份结尾的部份活动事务日志。不必备份整个日志文件,因为在备份前很多事物已经将他们的更新操作写入数据库。事物日志:预写入。
完整备份基本语法如下:
。
// 完整数据库备份
BACKUP DATABASE wht_SM TO DISK = 'E:/backups/wht_sm.bak'
2.差异性数据库备份
差异性数据库备份包括自从上一次完整性备份以来所有改变的数据页,以及备份结尾的部份活动事务日志。
差异备份和完整备份的语法很相似,唯一不同的是加上了
完整备份基本语法如下:
。
// 完整数据库备份
BACKUP DATABASE wht_SM TO DISK = 'E:/backups/wht_sm.bak' WITH DIFFERENTIAL
3.事务日志备份
事务日志备份的内容是从还未被备份的事务日志开始,直到备份结尾的最后一个事务日志为止。需要注意的是执行事务日志的前提是你的数据库恢复模型必须是完整恢复模型或是批量日志恢复模型(恢复模型)
通常情况下大家会以为完整性备份会截断事务日志,以便下一次备份日志时不再重复备份,但这是错误的。完整备份不会截断事务日志。
事务日志备份的语法和完整备份相似,唯一不同的是第二个关键字,把database换成log
完整备份基本语法如下:
。
// 完整数据库备份
BACKUP LOG wht_SM TO DISK = 'E:/backups/wht_SM_log.bak'
二、还原命令
还原主要分为四步走:
- 出现故障后,首先执行备份活动事务日志(日志尾部)命令,这里以wht_sm作为数据库名。命令如下:
// 日志还原
BACKUP LOG wht_SM TO DISK = 'E:/backups/wht_sm_log.bak' with no_truncate
- 从最新完整备份还原数据:
// 完整还原
RESTORE DATABASE wht_SM FROM DISK='E:/backups/wht_sm.bak' WITH NORECOVERY
- 若存在差异备份,则从最新差异备份还原数据
// 差异还原
RESTORE DATABASE wht_SM FROM DISK='E:/backups/wht_sm.bak'
WITH RECOVERY
- 还原数据库,如果数据库提示正在还原中,则执行此命令即可。
// 加速还原数据库
RESTORE DATABASE wht_sm WITH RECOVERY