WEB开发网
开发学院数据库MSSQL Server 详解SQL Server中数据库快照工作原理 阅读

详解SQL Server中数据库快照工作原理

 2007-05-15 09:28:55 来源:WEB开发网   
核心提示: USE masterGOIF EXISTS(SELECT name from sysdatabases where [name] = 'SourceDatabase')DROP DATABASE SourceDatabaseGOCREATE DATABASE SourceD
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。既然源数据库有一些数据已经在里面了,所以我们现在就能建立一个快照了。使用以下的脚本来建立数据库快照。

Tags:详解 SQL Server

编辑录入:coldstar [复制链接] [打 印]
赞助商链接