Skip to content

https://learn.microsoft.com/zh-cn/sql/relational-databases/databases/database-snapshots-sql-server?view=sql-server-ver16

1.快照说明

数据库快照是已有数据库的只读静态视图

1.1限制

SQL Server企业版才支持数据库快照

数据库快照必须与源数据库在相同的服务器实例上创建和保留

不能对源数据库进行删除、分离或还原

源数据库文件不可以被删除

由于源数据库的I/O增加,可能对性能造成负面影响

1.2创建

sql
CREATE DATABASE [数据库快照名]
ON
(
    NAME = [源数据库文件逻辑名1],
    FILENAME = '数据库快照文件要放在的位置.ss',
),
(
    NAME = [源数据库文件逻辑名2],
    FILENAME = '数据库快照文件要放在的位置.ss',
)...
AS SNAPSHOT OF [源数据库名];
CREATE DATABASE [数据库快照名]
ON
(
    NAME = [源数据库文件逻辑名1],
    FILENAME = '数据库快照文件要放在的位置.ss',
),
(
    NAME = [源数据库文件逻辑名2],
    FILENAME = '数据库快照文件要放在的位置.ss',
)...
AS SNAPSHOT OF [源数据库名];

注意:如果源数据库有多个文件,必须在脚本中一一指出

1.3还原

sql
USE master;
RESTORE DATABASE [数据库名] FROM DATABASE_SNAPSHOT = '数据库快照名';
USE master;
RESTORE DATABASE [数据库名] FROM DATABASE_SNAPSHOT = '数据库快照名';

注意:必须切换到master或其他数据库,才可以进行快照恢复

1.3删除

sql
DROP DATABASE [数据库快照名];
DROP DATABASE [数据库快照名];