当前位置:首页 » 操作系统 » 创建数据库快照

创建数据库快照

发布时间: 2023-04-22 12:46:42

sql2005 数据库快照是什么

数据库快照是MSSQL2005的新功能,仅在 Microsoft SQL Server 2005 Enterprise Edition 中可用。而且SQL Server Management Studio 不支持创建数据库快照,创建快照的唯一方式是使用 Transact-SQL。

数据库快照是数据库(称为“源数据库”)的只读静态视图。在创建时,每个数据库快照在事务上都与源数据库一致。在创建数据库快照时,源数据库通常会有打开的事务。在快照可以使用之前,打开的事务会回滚以使数据库快照在事务上取得一致。

客户端可以查询数据库快照,这对于基于创建快照时的数据编写报表是很有用的。而且,如果以后源数据库损坏了,便可以将源数据库恢复到它在创建快照时的状态。

创建数据库快照可以:

·<!--[if !supportLists]--><!--[endif]-->维护历史数据以生成报表。可以通过快照访问特定时间点的数据。例如,您可以在给定时间段(例如,财务季度)要结束的时候创建数据库快照以便日后制作报表。然后便可以在快照上运行期间要结束时创建的报表。

·<!--[if !supportLists]-->将查询实施在数据库的快照上,可以释放主体数据库上的资源。

·<!--[if !supportLists]-->加快恢复操作效率,使用快照将数据库恢复到生成快照时的状态比从备份还原快得多;但是,此后您无法对数据进行前滚操作。根据磁盘资源,可以每 24 小时创建 6 到 12 个滚动快照。每创建一个新的快照,就删除最早的快照。如果要恢复,可以将数据库恢复到在错误发生的前一时刻的快照。或者,也可以利用快照中的信息,手动重新创建删除的表或其他丢失的数据。例如,可以将快照中的数据大容量复制到数据库中,然后手动将数据合并回数据库中。

但是只要存在数据库快照,快照的源数据库就存在以下限制:

·<!--[if !supportLists]-->必须在与源数据库相同的服务器实例上创建数据库快照。

·<!--[if !supportLists]--> <!--[endif]-->数据库快照捕获开始创建快照的时间点,去掉所有未提交的事务。未提交的事务将在创建数据库快照期间回滚,因为数据库引擎 将对快照执行恢复操作(数据库中的事务不受影响)。

·<!--[if !supportLists]-->当将源数据库中更新的页强制压入快照时,如果快照用尽磁盘空间或者遇到某些错误,则该快照将成为可疑快照并且必须将其删除。有关详细信息,请参阅删除数据库快照。

·<!--[if !supportLists]-->快照为只读。

·<!--[if !supportLists]--> <!--[endif]-->禁止对 model 数据库、master 数据库和 tempdb 数据库创建快照。

·<!--[if !supportLists]--> <!--[endif]-->不能更改数据库快照文件的任何规范。

·<!--[if !supportLists]--><!--[endif]-->不能从快照中删除文件。

·<!--[if !supportLists]-->不能备份或还原快照。

·<!--[if !supportLists]-->不能附加或分离快照。

·<!--[if !supportLists]-->不能在 FAT32 文件系统或 RAW 分区中创建快照。

·<!--[if !supportLists]--> <!--[endif]-->数据库快照不支持全文索引,不能从源数据库传播全文目录。

·<!--[if !supportLists]-->数据库快照将继承快照创建时其源数据库的安全约束。由于快照是只读的,因此无法更改继承的权限,对源数据库的更改权限将不反映在现有快照中。

·<!--[if !supportLists]-->快照始终反映创建该快照时的文件组状态:在线文件组将保持在线状态,离线文件组将保持离线状态。有关详细信息,请参阅本主题后面的“含有离线文件组的数据库快照”。

·<!--[if !supportLists]-->如果源数据库的状态为 RECOVERY_PENDING,可能无法访问其数据库快照。但是,当解决了源数据库的问题之后,快照将再次变成可用快照。

·<!--[if !supportLists]-->只读文件组和压缩文件组不支持恢复。尝试恢复到这两类文件组将失败。有关恢复的详细信息,请参阅恢复到数据库快照。

Ⅱ 如何利用SQL Server数据库快照形成报表

在SQL Server 2005中,它的另外一个强大的新特点是数据库快照。数据库快照是一个数据库的只读副本,它是数据库所有数据的映射,由快照被执行的时间点来决定它的内容。
这些数据库快照在报表方面是非常有价值,因为在快照数据库中或者在原数据库中,对于任何查询而言没有锁就将被执行。快照也可以使用在灾难恢复中,因为你可以将现有的数据恢复到现有的快照中,或者还可以在有害数据操作声明的事件中存储个别必要的表和数据。
数据库快照是如何工作的?
可以使用典型的数据库命令CREATE DATABASE语句来生成一个数据库快照,在声明中有一个源数据库快照的附加说明。当快照被建立时,同时生成一个稀疏文件。这个文件(只能使用在NTFS卷中)在初始化的时候并没有磁盘空间分配给它——尽管你可能在WINDOWS资源管理器中看到了文件的大小,它会看上去与原始的源数据库文件的大小相同。对磁盘来说其实这个文件的大小接近于零。
数据库快照在初始化时读的数据文件是来自于源数据库的。当源数据库的数据发生变化时,数据引擎就会将原始数据从源数据库拷贝到快照数据库中。这个技术确保快照数据库只反映快照被执行时数据的状态。当SELECT命令被用来发布反对数据库快照时,不管数据页的读取是否被定位在源数据库数据文件中还是在快照数据库数据文件中都是没有锁被发布的。因为在只读数据库快照中是没有锁被发布,数据库快照对于报表解决方案是一个重要的解决方案。
一个快照的实例
现在,让我们来看看数据库快照在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
注意这里产品区域的大小。我定义它的大小为CHAR(150)来强调数据文件的增长级数,这样在我接下来的实例中将更容易解释清楚快照是如何工作的。
现在既然我已经有了一个源数据库,现在我装载一些数据来扩展数据文件的大小位。如此,使用列表1中的脚本来创建销售历史表。
以下为引用的内容:
USE SourceDatabase
GO
IF OBJECT_ID('SalesHistory')>0 DROP TABLE SalesHistory
GO
CREATE TABLE SalesHistory
( SaleID INT IDENTITY(1,1),
Proct CHAR(150), SaleDate DATETIME,
SalePrice MONEY
)
DECLARE @i INT
SET @i = 1
WHILE (@i <=10000)
BEGIN INSERT INTO SalesHistory (Proct, SaleDate, SalePrice)
VALUES ('Computer', DATEADD(mm, @i, '3/11/1919'),
DATEPART(ms, GETDATE()) + (@i + 57) )
INSERT INTO SalesHistory (Proct, SaleDate, SalePrice)
VALUES ('BigScreen', DATEADD(mm, @i, '3/11/1927'),
DATEPART(ms, GETDATE()) + (@i + 13) )
INSERT INTO SalesHistory (Proct, SaleDate, SalePrice)
VALUES ('PoolTable', DATEADD(mm, @i, '3/11/1908'),
DATEPART(ms, GETDATE()) + (@i + 29) )
SET @i = @i + 1
END
GO

Ⅲ SQLServer快照功能以及其查询如何操作

SQLServer数据库的快照只能通过SQL语句创建,以msdb数据库为例进行说明:

1、执行以下代码,看看MSDB数据库有多少数据文件

EXEC SP_HELPDB msdb

查询结果是完全一样的。

(如有帮助,请采纳,谢谢)

Ⅳ 对于虚拟机来说,快照和备份有什么异同之处

快照是数据存储的某一时刻的状态记录。

备份是数据存储的某一时刻的副本。

一、相同之处:都可以用于储存。

二、不同之处:

1、数据库存不同

备份,本质上是一个副本。这等效于COPY在某个时间点将数据库中所有内容的副本放入特定扮握兆文件(备份文件,通常是.bak)中。

快照基本上类似于数据库的照片,即在特定皮轮时间点(创建快照的时间点)拍摄的数据库照片。但是这张照片是可以应用于SQL语句的新数据库。

2、访问方式不同

快照数据库中的数据保持不变。创建快照后,将标识原始数据库的所有数据页。如果在创建快照后修改了数据页面,则将复制数据页,并复制未修改的数据页,将没有快照(原始数据库和快照数据库共享数据页)。

该文件不是数据库,不能直接应用SQL。必须先通过还原(可以与原始数据库名称或新数据库相同)还原到数据库,然后才能访问其中的数据。

3、状态不同

备份的结果是一个文件,可以将其复制或写入磁带(银行中)以进行脱机很难恢复。由于镜像服务器上的数据库始终处于“还原”状态,因此可以在特定的时间点生成快照,以厅租便可以在镜像服务器上提供可访问的数据库,从而为数据仓库提供数据源。

Ⅳ sqlserver with snapshot 有什么作用

数据库快照为你现有的数据库创建了一个数据库的壳,然后无论何时当数据页被修改的时候,改变也同时被写入稀疏文件(sparse file)当中。当人们获取数据的时候,数据中没有变化的部分是从原始数据库中得到的,而改变的部分则是从稀疏文件中获得。
稀疏文件和数据库快照
当数据库快照被创建的时候,第一次的创建是十分迅速的。因为实际上只是创建了一个用来记录被修改文件的壳。随着时间的推移,文件不断的被修改,这些修改页都将被写进稀疏文件。你的主数据库中修改的文件越多,就有越多的文件被写入稀疏文件。因此,有越来越多的磁盘空间被用来保存你的主数据库和快照的数据库,也增加了你服务器的磁盘输入输出的次数。
稀疏文件被写入大小为64KB的分组块当中。每一个分组块增量能包含8个大小为8KB的数据页。所以,每次在你的主数据库中有任何的数据改变,都会先把数据页拷贝到稀疏文件当中,然后再将主数据库中文件的变化写入稀疏文件。一旦数据页被写入稀疏文件,他们就不再需要被写出来。因为页面的全部内容被保护起来,让其处于当快照建立时的状态。
为了实现优化磁盘并消除磁盘冲突,在主数据库以外的独立的驱动器和阵列中创建稀疏文件是一个明知之举。原因有二:
其一,当快照被建立的时候,没有数据被写入稀疏文件。从快照进行的所有的数据访问实际上都是在主数据库文件当中的。随着时间的推移,你会通过在不同的阵列和磁盘上从主文件数据库读取未被修改过的文件和从稀疏文件读取修改过的数据的方法来减少输入输出的负担。
其二,根据你数据库数据的易变动性和数据变化的数量,你可以通过将在主数据库的读取工作和稀疏文件的写入工作分离来减少输入输出的瓶颈大小。
使用数据库快照
在这里你一定要记住的事情就是,你的查询请求访问的依然是你的主数据库。当初始的快照被建立的时候,其实仅建立了一个空的壳子。所有的数据请求都是在主数据库文件中被完成的。随着时间的流逝和文件不断地被修改,就有一些数据请求从初始的数据库文件中分离出来指向了稀疏文件。所以,尽管看上去它是一个独立的数据库,那些根本的数据仍然是源于主数据库。
鉴于此,你需要确定不要试图去进行你日常活动范围以外的查询。这样说吧,你创建了一个快照,接着你进行了读写的操作,并对每个人做了记录。当那些记录被执行查询操作时,他们仍然继续影响着主数据库。所以你要保证任何新的活动都不会影响主数据的活动。
另外,你需要记住到底有哪些数据是被写入稀疏文件里的,而不是认为所有可能的数据都被写进了稀疏文件。基本上,当快照被创立时,主数据库的大小就是快照稀疏文件的潜在大小。如果稀疏文件中的数据量已经达到甚至超过数据库的一半时,也许再创造一个数据库的完整拷贝来取代现有的快照是一个更好的主意。
综上所述,我认为,数据库快照是一个非常新的功能。我也希望在SQL Server2005的所有版本,而不仅仅在企业版和开发版中可以应用这个功能。有一个没有讨论的地方就是我们没有讨论有关对数据库镜像使用快照。其实,无论是镜像还是原数据库,快照都给了你最好的方法。因为镜像是离线的,你并不能访问那些数据,所以说无论是镜像还是原数据库,它都给了你最好的方法。花一些时间去理解快照是如何应用于你的环境中的,并且确认你监视着维护快照的影响以及通过快照进行的数据存储。

热点内容
家庭云服务器怎么搭建 发布:2025-09-13 07:49:22 浏览:571
c语言编译器和电脑一样吗 发布:2025-09-13 07:47:14 浏览:17
webkit源码下载 发布:2025-09-13 07:03:16 浏览:42
python4delphi 发布:2025-09-13 06:47:34 浏览:159
iis设置静态缓存时间 发布:2025-09-13 06:13:44 浏览:911
韩国新建文件夹1 发布:2025-09-13 05:49:31 浏览:233
androidbar 发布:2025-09-13 05:44:26 浏览:995
安卓如何设置多媒体 发布:2025-09-13 05:30:47 浏览:900
存储卡降价了 发布:2025-09-13 05:09:33 浏览:854
tomcat只能内网访问 发布:2025-09-13 05:02:24 浏览:962