共用方式為


建立資料庫快照集 (Transact-SQL)

建立 SQL Server 資料庫快照集的唯一方法是使用 Transact-SQL。 SQL Server Management Studio 不支援建立資料庫快照集。

開始之前

必要條件

可使用任何復原模式的來源資料庫必須符合下列必要條件:

  • 伺服器執行個體必須在支援資料庫快照集的 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)

  1. 根據來源資料庫目前的大小,請確定您有足夠的磁碟空間來保存資料庫快照集。 資料庫快照集的大小上限是建立快照集時來源資料庫的大小。 如需詳細資訊,請參閱檢視資料庫快照集的疏鬆檔案大小 (Transact-SQL)

  2. 使用 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)