如何:備份檔案和檔案群組 (Transact-SQL)
當完整的資料庫備份因資料庫大小和效能需求而變得不可行時,您可以建立檔案備份來代替。「檔案備份」包含一或多個檔案 (或檔案群組) 中的所有資料。如需有關檔案備份的詳細資訊,請參閱<完整檔案備份>和<差異檔案備份>。
重要事項 |
---|
在簡單復原模式下,必須將所有的讀取/寫入檔案備份在一起。這樣可以確保將資料庫還原到一致的時間點。不要個別指定每一個讀取/寫入檔案或檔案群組,請改用 READ_WRITE_FILEGROUPS 選項。這個選項會備份資料庫中的所有讀取/寫入檔案群組。指定 READ_WRITE_FILEGROUPS 而建立的備份即稱為「部分備份」。如需詳細資訊,請參閱<部分備份>。 |
備份檔案與檔案群組
若要建立檔案或檔案群組備份,請使用 BACKUP DATABASE <file_or_filegroup> 陳述式。這個陳述式至少必須指定下列各項:
資料庫名稱。
分別為每個檔案或檔案群組指定 FILE 或 FILEGROUP 子句。
完整備份所要寫入的備份裝置。
檔案備份的基本 Transact-SQL 語法為:
BACKUP DATABASE database
{ FILE **=**logical_file_name | FILEGROUP **=**logical_filegroup_name } [ ,...f ]
TO backup_device [ ,...n ]
[ WITH with_options [ ,...o ] ] ;
選項
描述
database
這是要備份交易記錄、部分資料庫或完整資料庫的來源資料庫。
FILE =<logical_file_name>
指定要包含在檔案備份中的檔案的邏輯名稱。
FILEGROUP =logical_filegroup_name
指定要包含在檔案備份中的檔案群組的邏輯名稱。在簡單復原模式之下,只允許唯讀檔案群組使用檔案群組備份。
[,...f ]
這是一個預留位置,表示可以指定多個檔案和檔案群組。檔案或檔案群組的數目沒有限制。
backup_device [ ,...n ]
指定一份清單,列出備份作業可使用的 1 到 64 個備份裝置。您可以指定實體備份裝置,或者指定對應邏輯備份裝置 (若已經定義)。若要指定實體備份裝置,請使用 DISK 或 TAPE 選項:
{ DISK | TAPE } =physical_backup_device_name
如需詳細資訊,請參閱<備份裝置>。
WITH with_options [ ,...o ]
另外,也可以指定一或多個其他選項,如 DIFFERENTIAL。
附註差異檔案備份需要以完整檔案備份作為基底。如需詳細資訊,請參閱<差異檔案備份>。在完整復原模式下,您還必須備份交易記錄。若要使用一組完整的完整檔案備份來還原資料庫,您還必須有足夠的記錄備份,才能從第一個檔案備份開始涵蓋所有的檔案備份。如需詳細資訊,請參閱<如何:建立交易記錄備份 (Transact-SQL)>。
範例
下列範例會備份 Sales 資料庫次要檔案群組的一或多個檔案。這個資料庫使用完整復原模式,而且包含下列次要檔案群組:
名為 SalesGroup1 的檔案群組,其中含有檔案 SGrp1Fi1 和 SGrp1Fi2。
名為 SalesGroup2 的檔案群組,其中含有檔案 SGrp2Fi1 和 SGrp2Fi2。
[!附註]
在完整復原模式下,需要一般記錄備份來截斷記錄並支援將資料庫還原到特定時間點。
A. 建立兩個檔案的檔案備份
下列範例會建立只有 SalesGroup1 檔案群組之 SGrp1Fi2 檔案及 SalesGroup2 檔案群組之 SGrp2Fi2 檔案的差異檔案備份。
--Backup the files in the SalesGroup1 secondary filegroup.
BACKUP DATABASE Sales
FILE = 'SGrp1Fi2',
FILE = 'SGrp2Fi2'
TO DISK = 'G:\SQL Server Backups\Sales\SalesGroup1.bck'
GO
B. 建立次要檔案群組的完整檔案備份
下列範例會為兩個次要檔案群組中的每個檔案建立完整檔案備份。
--Back up the files in SalesGroup1.
BACKUP DATABASE Sales
FILEGROUP = 'SalesGroup1',
FILEGROUP = 'SalesGroup2'
TO DISK = 'C:\MySQLServer\Backups\Sales\SalesFiles.bck'
GO
C. 建立次要檔案群組的差異檔案備份
下列範例會為兩個次要檔案群組中的每個檔案建立差異檔案備份。
--Back up the files in SalesGroup1.
BACKUP DATABASE Sales
FILEGROUP = 'SalesGroup1',
FILEGROUP = 'SalesGroup2'
TO DISK = 'C:\MySQLServer\Backups\Sales\SalesFiles.bck'
GO
WITH
DIFFERENTIAL,
GO