建立資料庫快照集 (Transact-SQL)
建立 SQL Server 資料庫快照集的唯一方法是使用 Transact-SQL。 SQL Server Management Studio 不支援建立資料庫快照集。
開始之前:
若要建立資料庫快照集,請使用: Transact-SQL
開始之前
必要條件
可使用任何復原模式的來源資料庫必須符合下列必要條件:
伺服器執行個體必須在支援資料庫快照集的 SQL Server 版本上執行。 如需 SQL Server 2014 中資料庫快照集支援的相關信息,請參閱 SQL Server 2014 版本支援的功能。
除非來源資料庫是資料庫鏡像工作階段中的鏡像資料庫,否則該資料庫必須處於線上狀態。
若要在鏡像資料庫上建立資料庫快照集,資料庫必須處於同步處理鏡像狀態。
來源資料庫無法設定為可擴充的共用資料庫。
重要
如需其他重要考量的相關資訊,請參閱資料庫快照集 (SQL Server)。
建議
本節討論下列最佳做法:
最佳做法:為資料庫快照集命名
建立快照集之前,請務必考慮如何為其命名。 每個資料庫快照集都需要唯一的資料庫名稱。 為了簡化管理,快照集的名稱可包含識別資料庫的資訊,例如:
來源資料庫的名稱。
指示新名稱用於快照集。
快照集的建立日期和時間、序號或某些其他資訊,例如一天中的時間,以區分指定資料庫上的循序快照集。
例如,請考慮 AdventureWorks2012 資料庫的一系列快照集。 依 24 小時制,在上午 6 時到下午 6 時之間建立三個每日快照集。 每個每日快照集都會保留 24 小時後再卸除,並以相同名稱的新快照集取代。 請注意,每個快照集名稱都會指出小時,但不是當天:
AdventureWorks_snapshot_0600
AdventureWorks_snapshot_1200
AdventureWorks_snapshot_1800
或者,如果這些每日快照集的建立時間每天有所差異,則較不精確的命名慣例可能更好,例如:
AdventureWorks_snapshot_morning
AdventureWorks_snapshot_noon
AdventureWorks_snapshot_evening
最佳做法:限制資料庫快照集的數目
一段時間建立一系列的快照集,會擷取來源資料庫的循序快照集。 每個快照集都會保存,直到明確卸除為止。 由於每個快照集會隨原始頁面更新而繼續增長,因此您可在建立新快照集之後刪除較舊的快照集,以節省磁碟空間。
注意
如果您想要還原為資料庫快照集,您需要從該資料庫刪除任何其他快照集。
最佳做法:資料庫快照集的用戶端連線
若要使用資料庫快照集,用戶端必須知道該快照集的位置。 使用者可在建立或刪除另一個資料庫快照集時,從其中一個資料庫快照集讀取。 然而,當您以新的快照集替代現有快照集時,必須將用戶端重新導向至新的快照集。 用戶可以透過 SQL Server Management Studio 手動連線到資料庫快照集。 但是,若要支援實際執行環境,您應建立程式設計解決方案,以透明方式將報告寫入用戶端導向至資料庫的最新資料庫快照集。
安全性
權限
任何可建立資料庫的使用者都能建立資料庫快照集;但是,若要建立鏡像資料庫的快照集,您必須是系統管理員固定伺服器角色的成員。
如何建立資料庫快照集 (使用 Transact-SQL)
若要建立資料庫快照集
注意
如需此程序的範例,請參閱本節稍後的範例 (Transact-SQL)。
根據來源資料庫目前的大小,請確定您有足夠的磁碟空間來保存資料庫快照集。 資料庫快照集的大小上限是建立快照集時來源資料庫的大小。 如需詳細資訊,請參閱檢視資料庫快照集的疏鬆檔案大小 (Transact-SQL)。
使用 AS SNAPSHOT OF 子句在檔案上發出 CREATE DATABASE 語句。 建立快照集需要指定來源資料庫每個資料庫檔案的邏輯名稱。 語法如下所示:
CREATE DATABASE database_snapshot_name
ON
(
NAME =logical_file_name,
FILENAME ='os_file_name'
) [ ,...n ]
AS SNAPSHOT OF source_database_name
[;]
其中 *source_*database_name是源資料庫,logical_file_name i是參考檔案時 SQL Server 中使用的邏輯名稱,os_file_name是操作系統在建立檔案時所使用的路徑和檔名,而database_snapshot_name是您要還原資料庫之快照集的名稱。 如需此語法的完整描述,請參閱 CREATE DATABASE(SQL Server Transact-SQL)。
注意
當您建立資料庫快照集時,CREATE DATABASE 語句中不允許記錄檔、離線檔案、還原檔案和無用檔案。
範例 (Transact-SQL)
注意
.ss
範例中使用的擴充功能是任意的。
本區段包含下列範例:
A. 在 AdventureWorks 資料庫上建立快照集
此範例會在 AdventureWorks
資料庫上建立資料庫快照集。 快照集名稱 AdventureWorks_dbss_1800
及其疏鬆檔案 AdventureWorks_data_1800.ss
的檔名,表示建立時間下午 6 點(1800 小時)。
CREATE DATABASE AdventureWorks_dbss1800 ON
( NAME = AdventureWorks_Data, FILENAME =
'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Data\AdventureWorks_data_1800.ss' )
AS SNAPSHOT OF AdventureWorks;
GO
B. 在 Sales 資料庫上建立快照集
這個範例會在資料庫上Sales
建立資料庫快照集 sales_snapshot1200
。 此資料庫是在 CREATE DATABASE (SQL Server Transact-SQL) 中建立的「建立具有檔案群組的資料庫」範例中 建立的。
--Creating sales_snapshot1200 as snapshot of the
--Sales database:
CREATE DATABASE sales_snapshot1200 ON
( NAME = SPri1_dat, FILENAME =
'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\data\SPri1dat_1200.ss'),
( NAME = SPri2_dat, FILENAME =
'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\data\SPri2dt_1200.ss'),
( NAME = SGrp1Fi1_dat, FILENAME =
'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\mssql\data\SG1Fi1dt_1200.ss'),
( NAME = SGrp1Fi2_dat, FILENAME =
'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\data\SG1Fi2dt_1200.ss'),
( NAME = SGrp2Fi1_dat, FILENAME =
'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\data\SG2Fi1dt_1200.ss'),
( NAME = SGrp2Fi2_dat, FILENAME =
'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\data\SG2Fi2dt_1200.ss')
AS SNAPSHOT OF Sales;
GO
相關工作
另請參閱
CREATE DATABASE (SQL Server Transact-SQL)
資料庫快照集 (SQL Server)