备份文件和文件组 (SQL Server)

本主题介绍如何使用 SQL Server Management Studio、Transact-SQL 或 PowerShell 在 SQL Server 2014 中备份文件和文件组。 当数据库大小和性能要求使完整数据库备份不切实际时,可以改为创建文件备份。 文件备份包含一个或多个文件(或文件组)中的所有数据。 有关文件备份的详细信息,请参阅完整文件备份(SQL Server)差异备份(SQL Server)。

本主题内容

在您开始之前

局限性与限制

  • 不允许在显式或隐式事务中使用 BACKUP 语句。

  • 在简单的恢复模式下,读取/写入文件必须全部备份在一起。 这有助于确保数据库可以还原到一致的时间点。 使用READ_WRITE_FILEGROUPS选项,而不是单独指定每个读/写文件或文件组。 此选项备份数据库中的所有读/写文件组。 通过指定READ_WRITE_FILEGROUPS创建的备份称为 部分备份。 有关详细信息,请参阅部分备份(SQL Server)。

  • 有关限制和限制的详细信息,请参阅备份概述(SQL Server)。

建议

  • 默认情况下,每个成功的备份操作都会在 SQL Server 错误日志和系统事件日志中添加一个条目。 如果非常频繁地备份日志,这些成功消息会迅速累积,从而导致大量错误日志,这会使查找其他消息变得困难。 在这种情况下,如果没有任何脚本依赖于这些条目,则可以使用跟踪标志 3226 来禁止这些日志条目。 有关详细信息,请参阅跟踪标志 (Transact-SQL)

安全

权限

默认情况下,为 sysadmin 固定服务器角色以及 db_ownerdb_backupoperator 固定数据库角色的成员授予 BACKUP DATABASE 和 BACKUP LOG 权限。

备份设备的物理文件的所有权和权限问题可能会妨碍备份操作。 SQL Server 必须能够读取和写入设备;运行 SQL Server 服务的帐户必须具有写入权限。 但是,用于在系统表中为备份设备添加项目的 sp_addumpdevice不检查文件访问权限。 在进行备份或还原尝试时,只有访问物理资源时,备份设备的物理文件上才可能会出现此类问题。

使用 SQL Server Management Studio

备份数据库文件和文件组

  1. 连接到相应的 SQL Server 数据库引擎实例之后,在对象资源管理器中单击服务器名称以展开服务器树。

  2. 展开 “数据库”,然后根据数据库的不同,选择用户数据库,或展开 “系统数据库” ,再选择系统数据库。

  3. 右键单击数据库,指向 “任务”,然后单击“ 备份”。 将出现 “备份数据库” 对话框。

  4. “数据库” 列表中,验证数据库名称。 您也可以从列表中选择其他数据库。

  5. “备份类型 ”列表中,选择“ 完整 ”或“ 差异”。

  6. 对于 “备份组件 ”选项,请单击“ 文件和文件组”。

  7. “选择文件和文件组 ”对话框中,选择要备份的文件和文件组。 可以选择一个或多个单个文件,或选中文件组的框以自动选择该文件组中的所有文件。

  8. 可以接受 “名称” 文本框中建议的默认备份集名称,也可以为备份集输入其他名称。

  9. 或者,在 “说明” 文本框中,输入备份集的说明。

  10. 指定备份集何时过期:

    • 若要使备份集在特定天数后过期,请单击“ ”(默认选项)。 然后,输入集合创建后将过期的天数。 此值可以是 0 到 99999 天;值为 0 天意味着备份集永远不会过期。

      “服务器属性”对话框(“数据库设置”页)的默认备份介质保留(以天为单位)选项中设置默认值。 若要访问此选项,请在对象资源管理器中右键单击服务器名称并选择属性;然后选择“ 数据库设置” 页。

    • 若要使备份集在特定日期过期,请单击 “打开”,然后输入该集到期的日期。

  11. 单击 “磁盘 ”或“ 磁带”选择备份目标的类型。 若要选择最多包含单个介质集的 64 个磁盘或磁带驱动器的路径,请单击“ 添加”。 所选路径显示在 “备份到 ”列表中。

    注释

    若要删除备份目标,请选择它并单击“ 删除”。 若要查看备份目标的内容,请选择它并单击 “内容”。

  12. 若要查看或选择高级选项,请单击“选择页面”窗格中的选项

  13. 选择一个覆盖媒体选项,方法是单击以下任一选项:

    • 备份到现有媒体集

      对于此选项,请单击“ 追加到现有备份集 ”或 “覆盖所有现有备份集”。 有关备份到现有媒体集的信息,请参阅媒体集、媒体系列和备份集(SQL Server)。

      (可选)选择“检查介质集名称和备份集过期”,以便让备份操作验证介质集和备份集的过期日期和时间。

      (可选)在 “媒体集名称 ”文本框中输入名称。 如果未指定名称,则会创建一个具有空白名称的媒体集。 如果指定介质集名称,则会检查介质(磁带或磁盘),以查看实际名称是否与此处输入的名称匹配。

      如果将媒体名称留空并选中该框以针对媒体进行检查,则成功将等于媒体上的媒体名称也为空白。

    • 备份到新的媒体集,并清除所有现有备份集

      对于此选项,请在 “新建媒体集名称 ”文本框中输入一个名称,并且(可选)在 “新建媒体集说明 ”文本框中描述媒体集。 有关创建新媒体集的详细信息,请参阅媒体集、媒体系列和备份集(SQL Server)。

  14. “可靠性 ”部分中,可以选择检查:

  15. 如果备份到磁带驱动器(在“常规”页的“目标”部分中指定),则“备份后卸载磁带”选项是激活的。 单击此选项可启用在卸载之前倒退磁带的选项。

    注释

    除非正在备份事务日志(如“常规”页的“备份类型”部分指定),否则事务日志部分中的选项处于非活动状态。

  16. SQL Server 2008 Enterprise 和更高版本支持 备份压缩。 默认情况下,是否压缩备份取决于 备份压缩默认 服务器配置选项的值。 但是,无论当前的服务器级别默认值如何,都可以通过检查 压缩备份来压缩备份,并且可以通过检查 “不压缩备份”来阻止压缩。

    查看当前备份压缩默认值

使用 Transact-SQL

备份文件和文件组

  1. 若要创建文件或文件组备份,请使用 BACKUP DATABASE <file_or_filegroup> 语句。 至少,此语句必须指定以下内容:

    • 数据库名称。

    • 文件和文件组各自有对应的 FILE 或 FILEGROUP 子句。

    • 将写入完整备份的备份设备。

    文件备份的基本 Transact-SQL 语法为:

    BACKUP DATABASE 数据库

    { FILE =logical_file_name |FILEGROUP =logical_filegroup_name } [ ...f ]

    TO backup_device [ ...n ]

    [ WITH with_options [ ...o ] ;

    选项 DESCRIPTION
    数据库 备份事务日志、部分数据库或完整的数据库时所用的源数据库。
    文件 =logical_file_name 指定要包含在文件备份中的文件的逻辑名称。
    FILEGROUP =logical_filegroup_name 指定要包含在文件备份中的文件组的逻辑名称。 在简单恢复模式下,只允许对只读文件组执行文件组备份。
    [ ...f ] 指示可以指定多个文件和文件组的占位符。 文件或文件组的数量不受限制。
    backup_device [ ...n ] 指定要用于备份操作的 1 到 64 个备份设备的列表。 可以指定物理备份设备,也可以指定相应的逻辑备份设备(如果已定义)。 若要指定物理备份设备,请使用 DISK 或 TAPE 选项:

    { DISK | TAPE } =physical_backup_device_name

    有关详细信息,请参阅备份设备(SQL Server)。
    WITH with_options [ ……o ] (可选)指定一个或多个其他选项,例如 DIFFERENTIAL。

    注意:差异文件备份需要完整文件备份作为基础。 有关详细信息,请参阅创建差异数据库备份(SQL Server)。
  2. 在完整恢复模式下,还必须备份事务日志。 若要使用完整的完整文件备份集还原数据库,还必须有足够的日志备份来跨所有文件备份,从第一个文件备份开始。 有关详细信息,请参阅备份事务日志(SQL Server)。

示例 (Transact-SQL)

以下示例用于备份 Sales 数据库的一个或多个辅助文件组中的文件。 此数据库使用完整恢复模式,并包含以下辅助文件组:

  • 一个名为SalesGroup1的文件组,包含文件SGrp1Fi1SGrp1Fi2

  • 名为SalesGroup2的文件组,包含文件SGrp2Fi1SGrp2Fi2

答: 为两个文件创建备份

以下示例创建了仅包含 SGrp1Fi2 文件和 SGrp2Fi2 文件组中的 SalesGroup1 文件的差异文件备份。

--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'  
   WITH   
      DIFFERENTIAL;  
GO  

使用 PowerShell

使用 Backup-SqlDatabase cmdlet 并为 Files 指定 -BackupAction 参数的值。 此外,请指定以下参数之一:

-   To back up a specific file, specify the `-DatabaseFile`*String* parameter, where *String* is one or more database files to be backed up.  

-   To back up all the files in a given filegroup, specify the `-DatabaseFileGroup`*String* parameter, where *String* is one or more database filegroups to be backed up.  

 The following example creates a full file backup of every file in the secondary filegroups 'FileGroup1' and 'FileGroup2' in the `MyDB` database. The backups are created on the default backup location of the server instance `Computer\Instance`.  

```powershell
Backup-SqlDatabase -ServerInstance Computer\Instance -Database MyDB -BackupAction Files -DatabaseFileGroup "FileGroup1","FileGroup2"  
```  

若要设置和使用 SQL Server PowerShell 提供程序,请参阅 SQL Server PowerShell 提供程序

另请参阅

备份概述 (SQL Server)
BACKUP (Transact-SQL)
RESTORE (Transact-SQL)
备份历史记录和标头信息 (SQL Server)
备份数据库 (常规页)
备份数据库 (备份选项页)
完整文件备份 (SQL Server)
差异备份 (SQL Server)
文件还原(完整恢复模式)
文件还原 (简单恢复模式)