SQL Server Database Snapshots

来源:这里教程网 时间:2026-03-02 10:00:48 作者:

1. 创建数据库快照的几个典型用途:

(1). 可以基于database mirror生成database snapshot,后者用于reporting server

(2). 用作一个镜像级的备份

2. 创建数据库快照:

CREATE DATABASE AdventureWorks_snapshot ON
( NAME = N'AdventureWorks_Data', -- the same name
FILENAME =
N'C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLDataAW_snapshot.mdf') -- a new physical name
AS SNAPSHOT OF AdventureWorks;


3. Snapshot的原理

(1) snapshot创建后,snapshot文件都为空;当数据发生变动时,该数据页的pre-change快照被保存到snapshot中;当所有的数据页都改动以后,snapshot就包含了一个 完整的数据库镜像.

(2) Snapshot使用NT Sparse file,因此必须被创建在NTFS文件系统上.

(3) SQL Server使用一个bitmap来判断哪些数据页已经被写入了snapshot.读取snapshot时, 发生变化的数据从snapshot中读取,其余的数据从源数据库中读取.


4. SNapshot的维护

(1) 带有snapshot database的数据库不能被drop, detach,restore.

(2) offline一个数据库会drop所有的snapshot

(3) 可以将源数据库恢复到snapshot数据库创建时的状态

RESTORE DATABASE AdventureWOrks
FROM SNAPSHOT = AdventureWorks_snapshot;

5.Restrictions

(1) 不能创建master, model和tempdb的snapshot

(2) read only

(3) 不能被backup/restored

(4) 不支持detach/attach

(5) 不支持full-text indexing

[@more@]

相关推荐