科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道SQL Server中数据库的快照工作原理(2)

SQL Server中数据库的快照工作原理(2)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在SQL Server 2005中,它的另外一个强大的新特点是数据库快照。数据库快照是一个数据库的只读副本,它是数据库所有数据的映射,由快照被执行的时间点来决定它的内容。

作者:changelive 来源:赛迪网 2007年8月28日

关键字: 快照 SQL Server SQL Server 各版本 数据库

  • 评论
  • 分享微博
  • 分享邮件
 

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)来强调数据文件的增长级数,这样在我接下来的实例中将更容易解释清楚快照是如何工作的。

现在既然我已经有了一个源数据库,现在我装载一些数据来扩展数据文件的大小位。如此,使用上面的脚本来创建销售历史表。

USE SourceDatabase
GO
IF OBJECT_ID('SalesHistory')>0      DROP TABLE SalesHistory
GO
CREATE TABLE SalesHistory
(SaleID INT IDENTITY(1,1),     
 Product CHAR(150),       SaleDate DATETIME,       
SalePrice MONEY)
DECLARE @i INT
SET @i = 1
WHILE (@i <=10000)
BEGIN      INSERT INTO SalesHistory     
(Product, SaleDate, SalePrice)      
VALUES      ('Computer', DATEADD(mm, @i, '3/11/1919'), 
DATEPART(ms, GETDATE()) + (@i + 57) )
INSERT INTO SalesHistory      
(Product, SaleDate, SalePrice)      
VALUES      ('BigScreen', DATEADD(mm, @i, '3/11/1927'), 
DATEPART(ms, GETDATE()) + (@i + 13) )
INSERT INTO SalesHistory      
(Product, SaleDate, SalePrice)      
VALUES      ('PoolTable', DATEADD(mm, @i, '3/11/1908'), 
DATEPART(ms, GETDATE()) + (@i + 29) )
SET @i = @i + 1
END
GO

一旦你运行以下的脚本,就可以来操纵数据库文件储存的地方了。在这个实例上面,我将这些文件放在C:SQL Server文件夹下。在我的计算机上,当数据库被初始化创建时数据文件的大小是1,216KB,数据装载后的大小是7,360KB。既然源数据库有一些数据已经在里面了,所以我们现在就能建立一个快照了。使用以下的脚本来建立数据库快照。

CREATE DATABASE SnapshotDatabase

ON

(

NAME = 'SourceDatabase_Data',

FILENAME = 'C:SQLServerSnapshotDatabase.mdf'

) AS SNAPSHOT OF SourceDatabase
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章