SQL如何创建数据库快照

    最近开始学的数据库,使用的是SQL server 2008,以下是我学习数据库快照的笔记,如有错误还请指正。

什么是数据库快照:
数据库快照,顾名思义就是给数据库某个时刻拍的照片,是数据库(源数据库)的只读、静态视图。多个快照可以位于一个源数据库中,并且可以作为数据库始终驻留在同一服务器实例上。创建快照时,每个数据库快照在事务上与源数据库一致。在被数据库所有者显式删除之前,快照始终存在。

如何创建数据库快照:

    下面是进行如下操作的一些最佳方法:命名数据库快照、创建它们时进行计时、限制它们的数量以及将客户端连接重新定向到快照。

    数据库快照的命名: 为了便于管理,数据库快照的名称可以包含标识数据库的信息,且每个数据库快照的名称具有唯一性。
    例如:
         .源数据库的名称
         .该新名称用于数据库快照的信息
         .快照的创建日期和时间、序列号或一些其他的信息(例如一天中的某个时间)以区分给定的数据库上的连续快照

基于每天24小时制,这里的数据名称为TEST,那么就可以这样命名:
        TEST_snapshot_0600              --上午六时的数据库快照
        TEST_snapshot_1203              --中午12时3分的数据库快照
        TEST_snapshot_1820              --18时20分的数据库快照
数据库快照的创建可以根据具体需要在不同的时刻进行创建。

创建数据库快照的语句基本与数据库的创建相同,只不过在末尾加了AS SNAPSHOT OF DB_NAME(作为xx数据库的快照)

下面是创建数据库快照的T-SQL语句:
CREATE DATABASE db_name ON
(
NAME = db_name_data,
FILENAME = ‘path\db_name_data.ss’
)
AS SNAPSHOT OF db_name;

例:

GO                              --执行批处理
    CREATE DATABASE TEST          
    ON 
    (
        NAME = TEST_data_1800,           --设置快照文件名称
        FILENAME = 'D:\SQL\TEST_data_1800.ss'  --指定快照文件位置
    )
    AS SNAPSHOT OF TEST;              --指定为数据库快照
    GO
注意:创建数据库快照时,CREATE DATABASE 语句中不允许有日志文件、脱机文件、还原文件和不起作用的文件

建好数据库快照后,点击对象资源管理器-数据库-数据库快照,就可以查看已建好的数据快照。

如果要删除数据快照,可以使用以下语句:
USE TEST                            --指定当前操作的数据库
    DROP DATABASE SalesSnapshot0600     --删除名为 SalesSnapshot0600 的数据库快照,而不影响源数据库
 删除后SalesSnapshot0600 的所有用户连接都被终止,并删除快照使用的所有 NTFS 文件系统稀疏文件

将数据库恢复到数据库快照步骤

1、标识要将数据库恢复到的数据库快照
2、删除其他任何数据库快照。
3、执行恢复操作
如果数据库使用完整恢复模式,则在执行恢复之前,应先备份日志,恢复数据库快照要求源数据库具有RESTORE DATABASE 权限。

TSQL语句如下:
RESTORE DATABASE <数据库名称> FROM DATABASE_SNAPSHOT = <数据库快照名称>
例:
--Test to see if sales_snapshot0600 exists and if it 
-- does, delete it.
IF EXISTS (SELECT dbid FROM sys.databases
    WHERE NAME='sales_snapshot0600')
    DROP DATABASE SalesSnapshot0600;
GO
-- Reverting Sales to sales_snapshot1200
USE master;
RESTORE DATABASE Sales FROM DATABASE_SNAPSHOT = 'sales_snapshot1200';
GO
已恢复的数据库将保留数据库快照的权限和配置(例如,数据库所有者和恢复模式)。
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值