现在,让我们来看看数据库快照在SQL Server 2005中是如何工作的。为此,首先我需要一个源数据库作为快照的来源。下面的脚本将创建一个源数据库:
USE master
GO
IF EXISTS(SELECT name from
sysdatabases where [name] = 'SourceDatabase')
DROP DATABASE SourceDatabase
GO
CREATE DATABASE SourceDatabaseON PRIMARY
(
NAME = SourceDatabase_Data,
FILENAME = 'C:SQLServerSourceDatabase_Data.mdf'
) LOG ON
(
NAME = SourceDatabase_Log,
FILENAME = 'C:SQLServerSourceDatabase_Log.ldf'
)
GO
CREATE DATABASE SnapshotDatabase
ON
(
NAME = 'SourceDatabase_Data',
FILENAME = 'C:SQLServerSnapshotDatabase.mdf'
) AS SNAPSHOT OF SourceDatabase
这个创建快照的语法与创建数据库的语法非常相似。两个主要的区别:第一个区别是AS SNAPSHOT OF SourceDatabase语句,在服务器实例上指明哪个数据库将作为快照的源数据库;第二个区别是,在事实上数据库快照是不会生成日志文件的。因为没有数据操作事物只会发生在只读数据库上,所以没有也不需要日志。