主頁 > 知識庫 > 掌握SQL Server數(shù)據(jù)庫快照的工作原理第1/2頁

掌握SQL Server數(shù)據(jù)庫快照的工作原理第1/2頁

熱門標簽:城市地圖標志怎么標注 漯河電銷回撥外呼系統(tǒng) 怎么修改高德地圖標注 長沙外呼系統(tǒng)平臺 美國地圖標注軟件下載 電話機器人怎么看余額 合肥crm外呼系統(tǒng)加盟 硅基電話機器人官網(wǎng) 西安電話自動外呼系統(tǒng)

數(shù)據(jù)庫快照是怎樣工作的? 



可以使用典型的數(shù)據(jù)庫命令CREATE DATABASE語句來生成一個數(shù)據(jù)庫快照,在聲明中有一個源數(shù)據(jù)庫快照的附加說明。當快照被建立時,同時生成一個稀疏文件。這個文件(只能使用在NTFS卷中)在初始化的時候并沒有磁盤空間分配給它——盡管你可能在WINDOWS資源管理器中看到了文件的大小,它會看上去與原始的源數(shù)據(jù)庫文件的大小相同。對磁盤來說其實這個文件的大小接近于零。 



數(shù)據(jù)庫快照在初始化時讀的數(shù)據(jù)文件是來自于源數(shù)據(jù)庫的。當源數(shù)據(jù)庫的數(shù)據(jù)發(fā)生變化時,數(shù)據(jù)引擎就會將原始數(shù)據(jù)從源數(shù)據(jù)庫拷貝到快照數(shù)據(jù)庫中。這個技術(shù)確??煺諗?shù)據(jù)庫只反映快照被執(zhí)行時數(shù)據(jù)的狀態(tài)。當SELECT命令被用來發(fā)布反對數(shù)據(jù)庫快照時,不管數(shù)據(jù)頁的讀取是否被定位在源數(shù)據(jù)庫數(shù)據(jù)文件中還是在快照數(shù)據(jù)庫數(shù)據(jù)文件中都是沒有鎖被發(fā)布的。因為在只讀數(shù)據(jù)庫快照中是沒有鎖被發(fā)布,數(shù)據(jù)庫快照對于報表解決方案是一個重要的解決方案。 


一個快照的實例 



現(xiàn)在,讓我們來看看數(shù)據(jù)庫快照在SQL Server 2005中是如何工作的。為此,首先我需要一個源數(shù)據(jù)庫作為快照的來源。下面的腳本將創(chuàng)建一個源數(shù)據(jù)庫: 


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






注意這里產(chǎn)品區(qū)域的大小。我定義它的大小為CHAR(150)來強調(diào)數(shù)據(jù)文件的增長級數(shù),這樣在我接下來的實例中將更容易解釋清楚快照是如何工作的。 



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


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 
12下一頁閱讀全文

標簽:玉溪 文山 濟源 撫順 吉林 廣西 商洛 瀘州

巨人網(wǎng)絡(luò)通訊聲明:本文標題《掌握SQL Server數(shù)據(jù)庫快照的工作原理第1/2頁》,本文關(guān)鍵詞  掌握,SQL,Server,數(shù)據(jù)庫,快照,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《掌握SQL Server數(shù)據(jù)庫快照的工作原理第1/2頁》相關(guān)的同類信息!
  • 本頁收集關(guān)于掌握SQL Server數(shù)據(jù)庫快照的工作原理第1/2頁的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章