共用方式為


建立資料庫快照集 (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)>。

  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 (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)

概念

資料庫快照集 (SQL Server)