通过SQL语句备份还原数据库

2021/12/17

1.备份数据库

backup database db_name to disk='d:\db_name.bak' with format

--通过使用with format可以做到覆盖任何现有的备份和创建一个新的媒体集。
--可以避免一些由于备份设置产生的错误.
--帮助文档上的解释:
--format指定应将媒体头写入用于此备份操作的所有卷。
--任何现有的媒体头都被重写。format选项使整个媒体内容无效,
--并且忽略任何现有的内容。

2.备份日志

backup log log_name to disk='d:\log_name.log' with norecovery 

--备份日志的时候使用Norecovery是用来备份尾日志的,
--这样备份日志的时候数据库处于恢复状态,
--别的进程就不能再访问数据库,日志就不会再增加了,
--这样在还原的时候就可以正常恢复了。
--还原备份的时候如果想同时还原之后的日志,
--必须加上Norecovery才可以还原日志,如果有多个日志备份,
--除了最后一个日志备份外,还原其他日志必须也得加上Norecovery才可以还原到最后一个日志。
--归根结底只能说这是数据库的规定。

3.还原数据库
先让数据库离线
alter database db_name set offline with rollback immediate
再进行还原

restore database db_name from disk='d:\db_name.bak' with replace


注意:
1.备份前确定数据库已上线
2.还原前确定数据库已下线
4.数据库的离线和上线
离线(断开与其它用户的连接)

alter database db_name set offline with rollback immediate 

上线(开启与其它用户的连接)

alter database db_name set online with rollback immediate