国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

詳解SQL Server中數據庫快照的工作原理

2024-08-31 00:46:06
字體:
來源:轉載
供稿:網友

詳解SQL Server中數據庫快照的工作原理,數據庫快照是怎樣工作的

可以使用典型的數據庫命令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)來強調數據文件的增長級數,這樣在我接下來的實例中將更容易解釋清楚快照是如何工作的。

現在既然我已經有了一個源數據庫,現在我裝載一些數據來擴展數據文件的大小位。如此,使用上面的腳本來創建銷售歷史表。

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

共2頁上一頁12下一頁
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 和田市| 临颍县| 荆州市| 宁河县| 西林县| 渝北区| 高要市| 方正县| 石家庄市| 南木林县| 涿州市| 龙江县| 梅州市| 邳州市| 澎湖县| 平遥县| 基隆市| 岑溪市| 茂名市| 闵行区| 科技| 平阴县| 清河县| 将乐县| 奇台县| 牡丹江市| 措美县| 伊吾县| 喜德县| 贞丰县| 云浮市| 德江县| 临清市| 安乡县| 柘荣县| 绥德县| 北川| 柳林县| 东安县| 威信县| 拉萨市|