最近在研究自动部署的问题。其中一个需求是能否对数据库进行快速地备份和还原操作。传统的完全备份和还原非常耗时,不太可取,我知道自从SQL Server 2005 以来,SQL Server 提供了快照功能,可以快速建立起一个只读快照,那么我们能否把这个快照作为备份并用来还原数据库呢?答案是:可以!不过这种备份、还原方式有若干限制,比如,需要还原的数据库必须只有一个快照,其它限制我也忘了,似乎对我不构成问题。下面来具体说明如何操作,假设我们打算对数据库 MyDb 创建一个快照 MyDBSnapshot,我们还假设数据库只有一个逻辑数据文件。

创建快照数据库

创建快照数据库和创建普通数据库类似,可以使用以下 SQL 语句:

1
2
3
4
5
6
CREATE DATABASE MyDBSnapshot ON
(
NAME = MyDB, -- MyDB 数据库的逻辑文件名,可以在 MyDb 数据库连接上用这个 SQL 语句得到: SELECT FILE_NAME(1)
FILENAME = 'D:\MyDatabases\MyDBSnapshot.ss' -- 快照数据库的物理文件名。文件名后缀任意,我这里用的 .ss
)
AS SNAPSHOT OF MyDB

通过以上语句,我们针对 MyDB 数据创建了它的快照数据库 MyDBSnapshot

将数据库还原为快照数据库创建时的状态

快照数据库创建之后,我们可以对原数据库进行各种操作,当我们需要将原数据库还原为快照数据库创建时的状态时,可以使用以下语句:

1
RESTORE DATABASE MyDB FROM DATABASE_SNAPSHOT = 'MyDBSnapshot'

删除快照数据库

删除快照数据库与删除普通数据库一样:

1
DROP DATABASE MyDBSnapshot

留言

2017-12-29