SQL Server 2012 创建数据库快照

原文:SQL Server 2012 创建数据库快照

 

不是所有的MSSQL数据库版本都支持数据库快照,只有Enterprise版本的才支持。

在其他版本上,以Business Intelligence Edition版本为例,创建快照时,会报如下错误

消息 1844,级别 16,状态 1,第 1 行
Business Intelligence Edition 不支持 Database Snapshot。

如图

SQL Server 2012 创建数据库快照

 

在Enterprise版本的数据库下,运行如下语句来创建快照会报错,错误信息为

消息 5127,级别 16,状态 1,第 1 行
必须指定用于创建数据库快照的所有文件。缺少文件“testtt_Data”。

create database testttSnapShot on
(
    name=N'testtt',filename='F:\testDataBase\testttSnapShot.ss'
)
as snapshot of testtt

SQL Server 2012 创建数据库快照

这说明,创建快照时 name=N'testtt'不是随便写的。必须指定和源数据库里面的数据文件相同的逻辑名称。原来的testtt数据库的主数据文件的逻辑名称应该是testtt_Data,而不是testtt。

如果不确定主数据文件的逻辑名称,可以运行select * from testtt.sys.database_files where type=0 确认一下,也可以用图形界面

SQL Server 2012 创建数据库快照

 

所以,正确的写法应该是

create database testttSnapShot on
(    
name
=N'testtt_Data',filename='F:\testDataBase\testttSnapShot.ss' ) as snapshot of testtt

这里还需要注意,如果路径不存在,会报错

SQL Server 2012 创建数据库快照