创建mysql数据库快照_sql语句⼤全之创建数据库快照
创建数据库快照
数据库快照是源数据库的只读、静态视图。⼀个源数据库可以有多个数据库快照。数据库快照的主要作⽤是:维护历史数据以⽤于制作各种报表,可以使⽤数据库快照将出现错误的源数据库恢复到创建快照时的状态。例如,在财务年度结束时,通过创建数据库快照可以有效地制作各种财务报表。
3.4.1 数据库快照简介
简单的说,快照就是数据库在某⼀指定时刻的照⽚。顾名思义,数据库快照(Database Snapshot)就像是为数据库照了相⽚⼀样。相⽚实际是照相时刻被照对象的静态呈现,⽽数据库快照则提供了源数据库在创建快照时刻的只读、静态视图。⼀旦为数据库建⽴了快照后,这个数据库快照就是创建快照那时刻数据库的情况,虽然数据库还在不断变化,但是这个快照不会再改变。
数据库快照在数据页级别上进⾏。当创建了某个数据库的数据库快照后,数据库快照使⽤⼀种稀疏⽂件维护源数据页。如果源数据库中的数据页上的数据没有更改,那么对数据库快照的读操作实际上就是读源数据库中的这些未更改的数据页。如果源数据库中的某些数据页上的数据被更改,则更改前的源数据页已经复制到数据快照的稀疏⽂件中去,对这些数据的读操作实际上就是读取稀疏⽂件中复制过来的数
据页。如果源数据库中的数据更改频繁,会导致数据库快照中稀疏⽂件的⼤⼩增长的很快。为了避免数据库快照中的稀疏⽂件过⼤,可以通过创建新的数据库快照来解决这⼀问题。
3.4.2 创建数据库快照
在Microsoft SQL Server 2008系统中,使⽤CREATE DATABASE语句创建数据库快照。创建数据库快照的基本语法格式如下所⽰:
CREATE DATABASE database_snapshot_name
ON
mysql面试题大全(
NAME=logical_file_name,
FILENAME='os_file_name'
小说网站建站程序)[,…n]
AS SNAPSHOT OF source_database_name
在上述语法中,database_snapshot_name参数是将要创建的数据库快照的名称,该名称必须符合数据库名称的标识符规范,并且在数据库名称中是惟⼀的。数据库快照的稀疏⽂件由NAME和FILENAME两个关键字来指定。AS SNAPSHOT OF⼦句⽤于指定该数据库快照的源数据库名称。
下⾯来对【图书管理系统(BookDateBase)】数据库创建⼀个名称“BookDAteBase_snapshot”的数据库快照。代码如下所⽰:
CREATE DATABASE BookDateBase_snapshot
ON
(
NAME= BookDateBase_DAT,
FILENAME='E:\张帅\zs SQL2008 shugao\SQL2008\第3章 管理数据库 代码\BookDateBase_snapshot.snp'
),
(
NAME=BookDateBase_DAT1,
FILENAME='E:\张帅\zs SQL2008 shugao\SQL2008\章 管理数据库 代码\BookDateBase_snapshot1.snp'
简单的php工厂模式),
(
NAME=BookDateBase_DAT2,
FILENAME='E:\张帅\zs SQL2008 shugao\SQL2008\章 管理数据库 代码\BookDateBase_snapshot2.snp'
),
(
NAME= BookDateBase_DAT3,
FILENAME='E:\张帅\zs SQL2008 shugao\SQL2008\第3章 管理数据库 代码\BookDateBase_snapsho
t3.snp'
)python基础编程题含答案
AS SNAPSHOT OF BookDateBAse
上述代码语句中,为【图书管理系统(BookDateBase)】数据库中的数据⽂件创建数据库快照,在创建数据库快照时,必须对每个数据⽂件建⽴快照,否则将提⽰缺少某个数据⽂件的快照。语句执⾏结果如图2-19所⽰。
图2-19 创建数据库快照
帝国cms付费可见如图3-21所⽰,创建快照后在【对象资源管理器】窗格的【数据库快照】节点下即可看到刚创建的【BookDateBase_snapshot】数据库快照,展开后可以看到其内容与源数据库完全相同。数据库快照的扩展名为.snp。
虽然数据库快照和源数据库的内容完全相同,但他与源数据库相⽐,数据库快照还是存在着⼀些限制:
l 必须在与源数据库相同的服务器实例上创建数据库快照。
l 数据库快照捕获开始创建快照的时间点,去掉所有未提交的事务。未提交的事务将在创建数据库快照期间回滚。
l 数据库快照为只读的,不能在数据库中执⾏修改操作。
l 禁⽌对model数据库、master数据库和tempdb数据库创建快照。
l 不能从数据库快照中删除⽂件。
l 不能备份或还原数据库快照。
l 不能附加或分离数据库快照。
l 不能在FAT32⽂件系统或RAW分区中创建快照。数据库快照所⽤的稀疏⽂件由NTFS⽂件系统提供。
l 数据库快照不⽀持全⽂索引,不能从源数据库传播全⽂⽬录。
l 数据库快照将继承快照创建时其源数据库的安全约束。由于快照是只读的,因此⽆法更改继承的权限,对源数据库的更改权限将不反映在现有快照中。
l 快照始终反映创建该快照时的⽂件组状态,即在线⽂件组将保持在线状态,离线⽂件组将保持离线状态。
l 只读⽂件组和压缩⽂件组不⽀持恢复。尝试恢复到这两类⽂件组将失败。
当源数据库发⽣损坏或出错时,就可以通过数据库快照来将数据库恢复到创建数据库快照时的状态。此时恢复的数据库会覆盖原来的数据库。执⾏恢复操作要求对源数据库具有RESTORE DATABASE权限,恢复时的语法格式如下所⽰:
RESTORE DATABASE database_name FROM DATABASE_SNAPSHOT=database_snapshot_name
代码中,database_name是源数据库的名称,database_snapshot_name是对应源数据库的快照名称。例如,要将
【BookDateBase_snapshot】数据库快照恢复到【图书管理系统(BookDateBase)】数据库中,其语句如下所⽰:
RESTORE DATABASE BookDateBase from DATABASE_SNAPSHOT=' BookDateBase_snapshot '
GO
freemarker和jsp使⽤上述命令时,会话中不能使⽤当前要恢复的数据库,否则会出错,建议在执⾏时使⽤master 数据库。也可以在⼯具栏上的【可⽤数据库】下拉框( )中选择其他的数据库。
接下来来介绍⼀下如何删除数据库快照,删除数据库快照的⽅法和其实和删除数据库的⽅法完全相同,也是使⽤DROP DATABASE语句。同样,不能删除当前正在使⽤的数据库快照。下⾯是删除【BookDateBase_snapshot】数据库快照的语句代码:
DROP DATABASE BookDateBase_snapshot
GO
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论