快照是数据存储的某一时刻的状态记录。
备份是数据存储的某一时刻的副本。
一、相同之处:都可以用于储存。
二、不同之处:
1、数据库存不同
备份,本质上是一个副本。这等效于COPY在某个时间点将数据库中所有内容的副本放入特定文件(备份文件,通常是.bak)中。
快照基本上类似于数据库的照片,即在特定时间点(创建快照的时间点)拍摄的数据库照片。但是这张照片是可以应用于SQL语句的新数据库。
2、访问方式不同
快照数据库中的数据保持不变。创建快照后,将标识原始数据库的所有数据页。如果在创建快照后修改了数据页面,则将复制数据页,并复制未修改的数据页,将没有快照(原始数据库和快照数据库共享数据页)。
该文件不是数据库,不能直接应用SQL。必须先通过还原(可以与原始数据库名称或新数据库相同)还原到数据库,然后才能访问其中的数据。
3、状态不同
备份的结果是一个文件,可以将其复制或写入磁带(银行中)以进行脱机很难恢复。由于镜像服务器上的数据库始终处于“还原”状态,因此可以在特定的时间点生成快照,以便可以在镜像服务器上提供可访问的数据库,从而为数据仓库提供数据源。
参考资料来源:
百度百科-快照
百度百科-备份
任何能创建数据库的用户都可以创建数据库快照。创建快照的唯一方式是使用 Transact-SQL。注意:有关命名数据库快照、设置创建数据库快照的时间和限制数据库快照成员的注意事项,请参阅创建数据库快照。创建数据库快照根据源数据库的当前大小,确保有足够的磁盘空间存放数据库快照。数据库快照的最大大小为创建快照时源数据库的大小。使用 AS SNAPSHOT OF 子句对文件执行 CREATE DATABASE 语句。创建快照需要指定源数据库的每个数据库文件的逻辑名称。有关创建数据库快照的语法的正式说明,请参阅 CREATE DATABASE (Transact-SQL)。注意:创建数据库快照时,CREATE DATABASE 语句中不允许有日志文件、脱机文件、还原文件和不起作用的文件。示例本节包含创建数据库快照的示例。A. 对 AdventureWorks 数据库创建快照此示例对AdventureWorks数据库创建数据库快照。快照名称AdventureWorks_dbss_1800及其稀疏文件的名称AdventureWorks_data_1800.ss指明了创建时间 6 P.M.(1800 小时)。复制代码CREATE DATABASE AdventureWorks_dbss1800 ON( NAME = AdventureWorks_Data, FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data\AdventureWorks_data_1800.ss' )AS SNAPSHOT OF AdventureWorksGO注意:示例中随意使用了扩展名 .ss。B. 对 Sales 数据库创建快照此示例对Sales数据库创建数据库快照sales_snapshot1200。SQLServer数据库的快照只能通过SQL语句创建,以msdb数据库为例进行说明:
1、执行以下代码,看看MSDB数据库有多少数据文件
EXEC SP_HELPDB msdb
2、为每一个数据文件创建快照,代码如下:
create database snap_MSDBData_1811221202
ON ( NAME = MSDBData, FILENAME= 'D:\userdata\temp\Snap_MSDBData.snap')
AS SNAPSHOT OF MSDB
3、在“数据库快照”那里就可以看到刚刚创建snap_MSDBData_1811221202这个快照了,对比一下快照和原库,内容是一样的
4、数据库快照其实也是一个数据库,可以在上面执行任何SQL语句,我们执行一个查询语句看看效果
SELECT * FROM [MSDB].[dbo].[MSdbms]
SELECT * FROM [snap_MSDBData_1811221202].[dbo].[MSdbms]
查询结果是完全一样的。
(如有帮助,请采纳,谢谢)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)