建立資料庫快照集 (Transact-SQL)
使用 Transact-SQL 是建立 SQL Server 資料庫快照集的唯一方式。 SQL Server Management Studio 不支援建立資料庫快照集。
**開始之前: **
必要條件
安全性
最佳作法:命名資料庫快照集
**若要建立資料庫快照集,請使用:**Transact-SQL
開始之前
必要條件
可使用任何復原模式的來源資料庫必須符合下列必要條件:
伺服器執行個體必須執行支援資料庫快照集的 SQL Server 版本。如需有關 SQL Server 2012 中資料庫快照集支援的詳細資訊,請參閱<SQL Server 2012 版本支援的功能>。
除非來源資料庫是資料庫鏡像工作階段中的鏡像資料庫,否則該資料庫必須處於線上狀態。
若要在鏡像資料庫上建立資料庫快照集,資料庫必須處於同步處理的鏡像狀態。
來源資料庫無法設定為可擴充的共用資料庫。
重要事項 |
---|
如需有關其他重要考量的詳細資訊,請參閱<資料庫快照集 (SQL Server)>。 |
建議
本節討論下列最佳作法:
最佳作法:命名資料庫快照集
最佳作法:限制資料庫快照集的數目
最佳作法:用戶端連接到資料庫快照集
最佳作法:命名資料庫快照集
建立快照集之前,務必先考慮如何命名快照集。 每個資料庫快照集都需要一個唯一的資料庫名稱。 為了方便管理,快照集的名稱可加入用於識別資料庫的資訊,例如:
來源資料庫的名稱。
表明新名稱是用於快照集的指示。
建立快照集的日期和時間、序號或其他資訊 (例如一天中的時間),以便區隔給定資料庫上的循序快照集。
例如,假設 AdventureWorks2012 資料庫有一系列的快照集, 三個每日快照集依據 24 小時制,以 6 小時為間隔,從早上 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,手動連接到資料庫快照集。 但是,若要支援實際執行環境,您應該建立程式設計方案,將撰寫報表的用戶端明確導向至資料庫最新的資料庫快照集。
[回到頂端]
安全性
權限
能夠建立資料庫的任何使用者都可以建立資料庫快照集,不過若要建立鏡像資料庫的快照集,您必須是 sysadmin 固定伺服器角色的成員。
[回到頂端]
如何建立資料庫快照集 (使用 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 (Transact-SQL)>。
[!附註]
建立資料庫快照集時,CREATE DATABASE 陳述式中不允許記錄檔、離線檔案、還原檔案與無用檔案。
[回到頂端]
範例 (Transact-SQL)
[!附註]
用於範例中的 .ss 副檔名可自行決定。
本節包含下列範例:
A. 在 AdventureWorks 資料庫上建立快照集
B. 在 Sales 資料庫上建立快照集
A.在 AdventureWorks 資料庫上建立快照集
此範例會在 AdventureWorks 資料庫上建立資料庫快照集。 快照集名稱 AdventureWorks_dbss_1800 與疏鬆檔案的檔案名稱 AdventureWorks_data_1800.ss,表示建立時間是 6 P.M (1800 小時)。
CREATE DATABASE AdventureWorks_dbss1800 ON
( NAME = AdventureWorks_Data, FILENAME =
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\AdventureWorks_data_1800.ss' )
AS SNAPSHOT OF AdventureWorks;
GO
B.在 Sales 資料庫上建立快照集
此範例會在 Sales 資料庫上建立資料庫快照集 sales_snapshot1200。 此資料庫是在 CREATE DATABASE (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\MSSQL11.MSSQLSERVER\MSSQL\data\SPri1dat_1200.ss'),
( NAME = SPri2_dat, FILENAME =
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\data\SPri2dt_1200.ss'),
( NAME = SGrp1Fi1_dat, FILENAME =
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\mssql\data\SG1Fi1dt_1200.ss'),
( NAME = SGrp1Fi2_dat, FILENAME =
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\data\SG1Fi2dt_1200.ss'),
( NAME = SGrp2Fi1_dat, FILENAME =
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\data\SG2Fi1dt_1200.ss'),
( NAME = SGrp2Fi2_dat, FILENAME =
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\data\SG2Fi2dt_1200.ss')
AS SNAPSHOT OF Sales
GO
[回到頁首]
相關工作
[回到頁首]
請參閱
參考
CREATE DATABASE (Transact-SQL)