如何备份文件和文件组 (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