當前位置:首頁 » 操作系統 » 創建資料庫快照

創建資料庫快照

發布時間: 2023-04-22 12:46:42

sql2005 資料庫快照是什麼

資料庫快照是MSSQL2005的新功能,僅在 Microsoft SQL Server 2005 Enterprise Edition 中可用。而且SQL Server Management Studio 不支持創建資料庫快照,創建快照的唯一方式是使用 Transact-SQL。

資料庫快照是資料庫(稱為「源資料庫」)的只讀靜態視圖。在創建時,每個資料庫快照在事務上都與源資料庫一致。在創建資料庫快照時,源資料庫通常會有打開的事務。在快照可以使用之前,打開的事務會回滾以使資料庫快照在事務上取得一致。

客戶端可以查詢資料庫快照,這對於基於創建快照時的數據編寫報表是很有用的。而且,如果以後源資料庫損壞了,便可以將源資料庫恢復到它在創建快照時的狀態。

創建資料庫快照可以:

·<!--[if !supportLists]--><!--[endif]-->維護歷史數據以生成報表。可以通過快照訪問特定時間點的數據。例如,您可以在給定時間段(例如,財務季度)要結束的時候創建資料庫快照以便日後製作報表。然後便可以在快照上運行期間要結束時創建的報表。

·<!--[if !supportLists]-->將查詢實施在資料庫的快照上,可以釋放主體資料庫上的資源。

·<!--[if !supportLists]-->加快恢復操作效率,使用快照將資料庫恢復到生成快照時的狀態比從備份還原快得多;但是,此後您無法對數據進行前滾操作。根據磁碟資源,可以每 24 小時創建 6 到 12 個滾動快照。每創建一個新的快照,就刪除最早的快照。如果要恢復,可以將資料庫恢復到在錯誤發生的前一時刻的快照。或者,也可以利用快照中的信息,手動重新創建刪除的表或其他丟失的數據。例如,可以將快照中的數據大容量復制到資料庫中,然後手動將數據合並回資料庫中。

但是只要存在資料庫快照,快照的源資料庫就存在以下限制:

·<!--[if !supportLists]-->必須在與源資料庫相同的伺服器實例上創建資料庫快照。

·<!--[if !supportLists]--> <!--[endif]-->資料庫快照捕獲開始創建快照的時間點,去掉所有未提交的事務。未提交的事務將在創建資料庫快照期間回滾,因為資料庫引擎 將對快照執行恢復操作(資料庫中的事務不受影響)。

·<!--[if !supportLists]-->當將源資料庫中更新的頁強制壓入快照時,如果快照用盡磁碟空間或者遇到某些錯誤,則該快照將成為可疑快照並且必須將其刪除。有關詳細信息,請參閱刪除資料庫快照。

·<!--[if !supportLists]-->快照為只讀。

·<!--[if !supportLists]--> <!--[endif]-->禁止對 model 資料庫、master 資料庫和 tempdb 資料庫創建快照。

·<!--[if !supportLists]--> <!--[endif]-->不能更改資料庫快照文件的任何規范。

·<!--[if !supportLists]--><!--[endif]-->不能從快照中刪除文件。

·<!--[if !supportLists]-->不能備份或還原快照。

·<!--[if !supportLists]-->不能附加或分離快照。

·<!--[if !supportLists]-->不能在 FAT32 文件系統或 RAW 分區中創建快照。

·<!--[if !supportLists]--> <!--[endif]-->資料庫快照不支持全文索引,不能從源資料庫傳播全文目錄。

·<!--[if !supportLists]-->資料庫快照將繼承快照創建時其源資料庫的安全約束。由於快照是只讀的,因此無法更改繼承的許可權,對源資料庫的更改許可權將不反映在現有快照中。

·<!--[if !supportLists]-->快照始終反映創建該快照時的文件組狀態:在線文件組將保持在線狀態,離線文件組將保持離線狀態。有關詳細信息,請參閱本主題後面的「含有離線文件組的資料庫快照」。

·<!--[if !supportLists]-->如果源資料庫的狀態為 RECOVERY_PENDING,可能無法訪問其資料庫快照。但是,當解決了源資料庫的問題之後,快照將再次變成可用快照。

·<!--[if !supportLists]-->只讀文件組和壓縮文件組不支持恢復。嘗試恢復到這兩類文件組將失敗。有關恢復的詳細信息,請參閱恢復到資料庫快照。

Ⅱ 如何利用SQL Server資料庫快照形成報表

在SQL Server 2005中,它的另外一個強大的新特點是資料庫快照。資料庫快照是一個資料庫的只讀副本,它是資料庫所有數據的映射,由快照被執行的時間點來決定它的內容。
這些資料庫快照在報表方面是非常有價值,因為在快照資料庫中或者在原資料庫中,對於任何查詢而言沒有鎖就將被執行。快照也可以使用在災難恢復中,因為你可以將現有的數據恢復到現有的快照中,或者還可以在有害數據操作聲明的事件中存儲個別必要的表和數據。
資料庫快照是如何工作的?
可以使用典型的資料庫命令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)來強調數據文件的增長級數,這樣在我接下來的實例中將更容易解釋清楚快照是如何工作的。
現在既然我已經有了一個源資料庫,現在我裝載一些數據來擴展數據文件的大小位。如此,使用列表1中的腳本來創建銷售歷史表。
以下為引用的內容:
USE SourceDatabase
GO
IF OBJECT_ID('SalesHistory')>0 DROP TABLE SalesHistory
GO
CREATE TABLE SalesHistory
( SaleID INT IDENTITY(1,1),
Proct CHAR(150), SaleDate DATETIME,
SalePrice MONEY
)
DECLARE @i INT
SET @i = 1
WHILE (@i <=10000)
BEGIN INSERT INTO SalesHistory (Proct, SaleDate, SalePrice)
VALUES ('Computer', DATEADD(mm, @i, '3/11/1919'),
DATEPART(ms, GETDATE()) + (@i + 57) )
INSERT INTO SalesHistory (Proct, SaleDate, SalePrice)
VALUES ('BigScreen', DATEADD(mm, @i, '3/11/1927'),
DATEPART(ms, GETDATE()) + (@i + 13) )
INSERT INTO SalesHistory (Proct, SaleDate, SalePrice)
VALUES ('PoolTable', DATEADD(mm, @i, '3/11/1908'),
DATEPART(ms, GETDATE()) + (@i + 29) )
SET @i = @i + 1
END
GO

Ⅲ SQLServer快照功能以及其查詢如何操作

SQLServer資料庫的快照只能通過SQL語句創建,以msdb資料庫為例進行說明:

1、執行以下代碼,看看MSDB資料庫有多少數據文件

EXEC SP_HELPDB msdb

查詢結果是完全一樣的。

(如有幫助,請採納,謝謝)

Ⅳ 對於虛擬機來說,快照和備份有什麼異同之處

快照是數據存儲的某一時刻的狀態記錄。

備份是數據存儲的某一時刻的副本。

一、相同之處:都可以用於儲存。

二、不同之處:

1、資料庫存不同

備份,本質上是一個副本。這等效於COPY在某個時間點將資料庫中所有內容的副本放入特定扮握兆文件(備份文件,通常是.bak)中。

快照基本上類似於資料庫的照片,即在特定皮輪時間點(創建快照的時間點)拍攝的資料庫照片。但是這張照片是可以應用於SQL語句的新資料庫。

2、訪問方式不同

快照資料庫中的數據保持不變。創建快照後,將標識原始資料庫的所有數據頁。如果在創建快照後修改了數據頁面,則將復制數據頁,並復制未修改的數據頁,將沒有快照(原始資料庫和快照資料庫共享數據頁)。

該文件不是資料庫,不能直接應用SQL。必須先通過還原(可以與原始資料庫名稱或新資料庫相同)還原到資料庫,然後才能訪問其中的數據。

3、狀態不同

備份的結果是一個文件,可以將其復制或寫入磁帶(銀行中)以進行離線很難恢復。由於鏡像伺服器上的資料庫始終處於「還原」狀態,因此可以在特定的時間點生成快照,以廳租便可以在鏡像伺服器上提供可訪問的資料庫,從而為數據倉庫提供數據源。

Ⅳ sqlserver with snapshot 有什麼作用

資料庫快照為你現有的資料庫創建了一個資料庫的殼,然後無論何時當數據頁被修改的時候,改變也同時被寫入稀疏文件(sparse file)當中。當人們獲取數據的時候,數據中沒有變化的部分是從原始資料庫中得到的,而改變的部分則是從稀疏文件中獲得。
稀疏文件和資料庫快照
當資料庫快照被創建的時候,第一次的創建是十分迅速的。因為實際上只是創建了一個用來記錄被修改文件的殼。隨著時間的推移,文件不斷的被修改,這些修改頁都將被寫進稀疏文件。你的主資料庫中修改的文件越多,就有越多的文件被寫入稀疏文件。因此,有越來越多的磁碟空間被用來保存你的主資料庫和快照的資料庫,也增加了你伺服器的磁碟輸入輸出的次數。
稀疏文件被寫入大小為64KB的分組塊當中。每一個分組塊增量能包含8個大小為8KB的數據頁。所以,每次在你的主資料庫中有任何的數據改變,都會先把數據頁拷貝到稀疏文件當中,然後再將主資料庫中文件的變化寫入稀疏文件。一旦數據頁被寫入稀疏文件,他們就不再需要被寫出來。因為頁面的全部內容被保護起來,讓其處於當快照建立時的狀態。
為了實現優化磁碟並消除磁碟沖突,在主資料庫以外的獨立的驅動器和陣列中創建稀疏文件是一個明知之舉。原因有二:
其一,當快照被建立的時候,沒有數據被寫入稀疏文件。從快照進行的所有的數據訪問實際上都是在主資料庫文件當中的。隨著時間的推移,你會通過在不同的陣列和磁碟上從主文件資料庫讀取未被修改過的文件和從稀疏文件讀取修改過的數據的方法來減少輸入輸出的負擔。
其二,根據你資料庫數據的易變動性和數據變化的數量,你可以通過將在主資料庫的讀取工作和稀疏文件的寫入工作分離來減少輸入輸出的瓶頸大小。
使用資料庫快照
在這里你一定要記住的事情就是,你的查詢請求訪問的依然是你的主資料庫。當初始的快照被建立的時候,其實僅建立了一個空的殼子。所有的數據請求都是在主資料庫文件中被完成的。隨著時間的流逝和文件不斷地被修改,就有一些數據請求從初始的資料庫文件中分離出來指向了稀疏文件。所以,盡管看上去它是一個獨立的資料庫,那些根本的數據仍然是源於主資料庫。
鑒於此,你需要確定不要試圖去進行你日常活動范圍以外的查詢。這樣說吧,你創建了一個快照,接著你進行了讀寫的操作,並對每個人做了記錄。當那些記錄被執行查詢操作時,他們仍然繼續影響著主資料庫。所以你要保證任何新的活動都不會影響主數據的活動。
另外,你需要記住到底有哪些數據是被寫入稀疏文件里的,而不是認為所有可能的數據都被寫進了稀疏文件。基本上,當快照被創立時,主資料庫的大小就是快照稀疏文件的潛在大小。如果稀疏文件中的數據量已經達到甚至超過資料庫的一半時,也許再創造一個資料庫的完整拷貝來取代現有的快照是一個更好的主意。
綜上所述,我認為,資料庫快照是一個非常新的功能。我也希望在SQL Server2005的所有版本,而不僅僅在企業版和開發版中可以應用這個功能。有一個沒有討論的地方就是我們沒有討論有關對資料庫鏡像使用快照。其實,無論是鏡像還是原資料庫,快照都給了你最好的方法。因為鏡像是離線的,你並不能訪問那些數據,所以說無論是鏡像還是原資料庫,它都給了你最好的方法。花一些時間去理解快照是如何應用於你的環境中的,並且確認你監視著維護快照的影響以及通過快照進行的數據存儲。

熱點內容
linux刻錄iso 發布:2025-05-18 00:16:15 瀏覽:661
php動態參數 發布:2025-05-18 00:12:05 瀏覽:424
安卓應用上傳 發布:2025-05-18 00:11:57 瀏覽:802
數對的演算法 發布:2025-05-18 00:11:02 瀏覽:381
linuxwhile 發布:2025-05-18 00:10:08 瀏覽:143
xpftp外網 發布:2025-05-17 23:58:11 瀏覽:385
如何評價一個伺服器的性能 發布:2025-05-17 23:40:53 瀏覽:270
淘寶客適合什麼伺服器 發布:2025-05-17 23:39:26 瀏覽:613
python循環文件 發布:2025-05-17 23:39:22 瀏覽:828
androidstudio更新 發布:2025-05-17 23:38:22 瀏覽:643