掌握SQL Server資料庫快照集的工作原理第1/2頁

來源:互聯網
上載者:User


資料庫快照集是怎樣工作的?

可以使用典型的資料庫命令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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.