如何:備份檔案和檔案群組 (Transact-SQL)

當完整的資料庫備份因資料庫大小和效能需求而變得不可行時,您可以建立檔案備份來代替。「檔案備份」包含一或多個檔案 (或檔案群組) 中的所有資料。如需有關檔案備份的詳細資訊,請參閱<完整檔案備份>和<差異檔案備份>。

重要事項重要事項

在簡單復原模式下,必須將所有的讀取/寫入檔案備份在一起。這樣可以確保將資料庫還原到一致的時間點。不要個別指定每一個讀取/寫入檔案或檔案群組,請改用 READ_WRITE_FILEGROUPS 選項。這個選項會備份資料庫中的所有讀取/寫入檔案群組。指定 READ_WRITE_FILEGROUPS 而建立的備份即稱為「部分備份」。如需詳細資訊,請參閱<部分備份>。

備份檔案與檔案群組

  1. 若要建立檔案或檔案群組備份,請使用 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。

    附註附註
    差異檔案備份需要以完整檔案備份作為基底。如需詳細資訊,請參閱<差異檔案備份>。
  2. 在完整復原模式下,您還必須備份交易記錄。若要使用一組完整的完整檔案備份來還原資料庫,您還必須有足夠的記錄備份,才能從第一個檔案備份開始涵蓋所有的檔案備份。如需詳細資訊,請參閱<如何:建立交易記錄備份 (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