本主题介绍如何使用 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_owner 和 db_backupoperator 固定数据库角色的成员授予 BACKUP DATABASE 和 BACKUP LOG 权限。
备份设备的物理文件的所有权和权限问题可能会妨碍备份操作。 SQL Server 必须能够读取和写入设备;运行 SQL Server 服务的帐户必须具有写入权限。 但是,用于在系统表中为备份设备添加项目的 sp_addumpdevice不检查文件访问权限。 在进行备份或还原尝试时,只有访问物理资源时,备份设备的物理文件上才可能会出现此类问题。
使用 SQL Server Management Studio
备份数据库文件和文件组
连接到相应的 SQL Server 数据库引擎实例之后,在对象资源管理器中单击服务器名称以展开服务器树。
展开 “数据库”,然后根据数据库的不同,选择用户数据库,或展开 “系统数据库” ,再选择系统数据库。
右键单击数据库,指向 “任务”,然后单击“ 备份”。 将出现 “备份数据库” 对话框。
在 “数据库” 列表中,验证数据库名称。 您也可以从列表中选择其他数据库。
在 “备份类型 ”列表中,选择“ 完整 ”或“ 差异”。
对于 “备份组件 ”选项,请单击“ 文件和文件组”。
在 “选择文件和文件组 ”对话框中,选择要备份的文件和文件组。 可以选择一个或多个单个文件,或选中文件组的框以自动选择该文件组中的所有文件。
可以接受 “名称” 文本框中建议的默认备份集名称,也可以为备份集输入其他名称。
或者,在 “说明” 文本框中,输入备份集的说明。
指定备份集何时过期:
若要使备份集在特定天数后过期,请单击“ 后 ”(默认选项)。 然后,输入集合创建后将过期的天数。 此值可以是 0 到 99999 天;值为 0 天意味着备份集永远不会过期。
在“服务器属性”对话框(“数据库设置”页)的默认备份介质保留(以天为单位)选项中设置默认值。 若要访问此选项,请在对象资源管理器中右键单击服务器名称并选择属性;然后选择“ 数据库设置” 页。
若要使备份集在特定日期过期,请单击 “打开”,然后输入该集到期的日期。
单击 “磁盘 ”或“ 磁带”选择备份目标的类型。 若要选择最多包含单个介质集的 64 个磁盘或磁带驱动器的路径,请单击“ 添加”。 所选路径显示在 “备份到 ”列表中。
注释
若要删除备份目标,请选择它并单击“ 删除”。 若要查看备份目标的内容,请选择它并单击 “内容”。
若要查看或选择高级选项,请单击“选择页面”窗格中的选项。
选择一个覆盖媒体选项,方法是单击以下任一选项:
备份到现有媒体集
对于此选项,请单击“ 追加到现有备份集 ”或 “覆盖所有现有备份集”。 有关备份到现有媒体集的信息,请参阅媒体集、媒体系列和备份集(SQL Server)。
(可选)选择“检查介质集名称和备份集过期”,以便让备份操作验证介质集和备份集的过期日期和时间。
(可选)在 “媒体集名称 ”文本框中输入名称。 如果未指定名称,则会创建一个具有空白名称的媒体集。 如果指定介质集名称,则会检查介质(磁带或磁盘),以查看实际名称是否与此处输入的名称匹配。
如果将媒体名称留空并选中该框以针对媒体进行检查,则成功将等于媒体上的媒体名称也为空白。
备份到新的媒体集,并清除所有现有备份集
对于此选项,请在 “新建媒体集名称 ”文本框中输入一个名称,并且(可选)在 “新建媒体集说明 ”文本框中描述媒体集。 有关创建新媒体集的详细信息,请参阅媒体集、媒体系列和备份集(SQL Server)。
在 “可靠性 ”部分中,可以选择检查:
完成后验证备份。
在写入媒体之前执行校验和,可选的情况下,在校验和错误时继续操作。 如需了解有关校验和的详细信息,请参阅备份和还原过程中可能出现的媒体错误(SQL Server)。
如果备份到磁带驱动器(在“常规”页的“目标”部分中指定),则“备份后卸载磁带”选项是激活的。 单击此选项可启用在卸载之前倒退磁带的选项。
注释
除非正在备份事务日志(如“常规”页的“备份类型”部分指定),否则事务日志部分中的选项处于非活动状态。
SQL Server 2008 Enterprise 和更高版本支持 备份压缩。 默认情况下,是否压缩备份取决于 备份压缩默认 服务器配置选项的值。 但是,无论当前的服务器级别默认值如何,都可以通过检查 压缩备份来压缩备份,并且可以通过检查 “不压缩备份”来阻止压缩。
查看当前备份压缩默认值
使用 Transact-SQL
备份文件和文件组
若要创建文件或文件组备份,请使用 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)。在完整恢复模式下,还必须备份事务日志。 若要使用完整的完整文件备份集还原数据库,还必须有足够的日志备份来跨所有文件备份,从第一个文件备份开始。 有关详细信息,请参阅备份事务日志(SQL Server)。
示例 (Transact-SQL)
以下示例用于备份 Sales
数据库的一个或多个辅助文件组中的文件。 此数据库使用完整恢复模式,并包含以下辅助文件组:
一个名为
SalesGroup1
的文件组,包含文件SGrp1Fi1
和SGrp1Fi2
。名为
SalesGroup2
的文件组,包含文件SGrp2Fi1
和SGrp2Fi2
。
答: 为两个文件创建备份
以下示例创建了仅包含 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)
文件还原(完整恢复模式)
文件还原 (简单恢复模式)