备份设备(SQL Server)

在 SQL Server 数据库的备份作期间,备份的数据( 备份)将写入物理备份设备。 这个物理备份设备会在介质集中写入第一个备份时进行初始化。 一组或多台备份设备上的备份构成单个介质集。

在本主题中:

术语和定义

备份磁盘
包含一个或多个备份文件的硬盘或其他磁盘存储介质。 备份文件是常规操作系统文件。

媒体集
使用固定类型和备份设备的备份介质、磁带或磁盘文件的有序集合。 有关媒体集的详细信息,请参阅媒体集、媒体系列和备份集(SQL Server)。

物理备份设备
磁带驱动器或由操作系统提供的磁盘文件。 备份可以写入 1 到 64 个备份设备。 如果备份需要多个备份设备,则设备必须对应于单一类型的设备(磁盘或磁带)。

除了磁盘或磁带外,还可以将 SQL Server 备份写入 Azure Blob 存储服务。

使用磁盘备份设备

本节内容:

在备份操作将备份追加到介质集的过程中,如果磁盘文件已满,则备份操作将失败。 备份文件的最大大小取决于磁盘设备上可用的可用磁盘空间;因此,备份磁盘设备的相应大小取决于备份的大小。

磁盘备份设备可以是简单的磁盘设备,例如 ATA 驱动器。 或者,可以使用热交换磁盘驱动器,以便以透明方式将驱动器上的完整磁盘替换为空磁盘。 备份磁盘可以是服务器上的本地磁盘,也可以是共享网络资源的远程磁盘。 有关如何使用远程磁盘的信息,请参阅本主题后面的“ 备份到网络共享上的文件”。

SQL Server 管理工具在处理磁盘备份设备时非常灵活,因为它们会在磁盘文件上自动生成时间戳名称。

重要

建议备份磁盘与数据库数据和日志磁盘不同。 这是确保可以在数据或日志磁盘发生故障时访问备份所必需的。

使用其物理名称指定备份文件 (Transact-SQL)

使用其物理设备名称指定备份文件的基本 BACKUP 语法为:

BACKUP DATABASE database_name

TO DISK = { 'physical_backup_device_name' | @physical_backup_device_name_var }

例如:

BACKUP DATABASE AdventureWorks2012   
   TO DISK = 'Z:\SQLServerBackups\AdventureWorks2012.bak';  
GO  

若要在 RESTORE 语句中指定物理磁盘设备,基本语法为:

RESTORE { DATABASE | LOG } database_name

FROM DISK = { 'physical_backup_device_name' | @physical_backup_device_name_var }

例如,

RESTORE DATABASE AdventureWorks2012   
   FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2012.bak';   

指定磁盘备份文件的路径

指定备份文件时,应输入其完整路径和文件名。 如果在备份到文件时仅指定文件名或相对路径,则备份文件将放入默认备份目录中。 默认备份目录为 C:\Program Files\Microsoft SQL Server\MSSQL。n\MSSQL\Backup,其中 n 是服务器实例的数目。 因此,对于默认服务器实例,默认备份目录为:C:\Program Files\Microsoft SQL Server\MSSQL12。MSSQLSERVER\MSSQL\Backup。

为了避免歧义,尤其是在脚本中,我们建议在每个 DISK 子句中显式指定备份目录的路径。 但是,使用查询编辑器时,这不太重要。 在这种情况下,如果确定备份文件驻留在默认备份目录中,则可以省略 DISK 子句的路径。 例如,以下 BACKUP 语句将 AdventureWorks2012 数据库备份到默认备份目录。

BACKUP DATABASE AdventureWorks2012   
   TO DISK = 'AdventureWorks2012.bak';  
GO  

注释

默认位置存储在 backupDirectory 注册表项中的 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.n\MSSQLServer下。

备份到网络共享上的文件

若要使 SQL Server 访问远程磁盘文件,SQL Server 服务帐户必须有权访问网络共享。 这包括需要拥有备份操作写入网络共享的权限,以及还原操作读取网络共享的权限。 网络驱动器和权限的可用性取决于运行 SQL Server 服务的上下文:

  • 若要在域用户帐户中运行 SQL Server 时备份到网络驱动器,必须在运行 SQL Server 的会话中将共享驱动器映射为网络驱动器。 如果从命令行开始 Sqlservr.exe,SQL Server 将看到登录会话中映射的任何网络驱动器。

  • Sqlservr.exe 作为服务运行时,SQL Server 在与登录会话无关的单独会话中运行。 服务运行的会话可以拥有自己的映射驱动器,但通常情况下没有。

  • 可以使用计算机帐户而不是域用户连接到网络服务帐户。 若要启用从特定计算机到共享驱动器的备份,请授予对计算机帐户的访问权限。 只要正在写入备份的 Sqlservr.exe 过程具有访问权限,发送 BACKUP 命令的用户是否具有访问权限,就无关紧要。

    重要

    通过网络备份数据可能会受到网络错误的影响;因此,我们建议在使用远程磁盘时,在备份作完成后验证备份作。 有关详细信息,请参阅 RESTORE VERIFYONLY (Transact-SQL)

指定通用命名约定(UNC)名称

若要在备份或还原命令中指定网络共享,应使用备份设备的文件的完全限定通用命名约定 (UNC) 名称。 UNC 名称的格式为 \\Systemname\ShareName\路径\FileName

例如:

BACKUP DATABASE AdventureWorks2012   
   TO DISK = '\\BackupSystem\BackupDisk1\AW_backups\AdventureWorksData.Bak';  
GO  

使用磁带设备

注释

在 SQL Server 的未来版本中,将删除对磁带备份设备的支持。 避免在新开发工作中使用此功能,并计划修改当前使用此功能的应用程序。

本节内容:

将 SQL Server 数据备份到磁带需要磁带驱动器被 Microsoft Windows 操作系统支持。 此外,对于给定的磁带驱动器,我们建议仅使用驱动器制造商建议的磁带。 有关如何安装磁带机的详细信息,请参阅 Windows作系统的文档。

使用磁带机时,备份操作可能会填满一个磁带后,继续到另一个磁带。 每个磁带都包含一个媒体标头。 使用的第一个介质称为 初始磁带。 每个连续 磁带称为延续磁带 ,并且具有比上一个磁带更高的介质序列号。 例如,与四个磁带设备关联的媒体集至少包含四个初始磁带(如果数据库不适合,则包含四个延续磁带)。 追加备份集时,必须在系列中加载最后一个磁带。 如果未装载最后一个磁带,数据库引擎会向前扫描到已装载磁带的末尾,然后要求更改磁带。 此时,装载最后一个磁带。

磁带备份设备像磁盘设备一样使用,但有以下例外:

  • 磁带设备必须以物理方式连接到运行 SQL Server 实例的计算机。 不支持备份到远程磁带设备。

  • 如果在备份作期间填充了磁带备份设备,但仍必须写入更多数据,SQL Server 会提示输入新磁带,并在加载新磁带后继续执行备份作。

使用备份磁带的物理名称指定(Transact-SQL)

使用磁带驱动器的物理设备名称指定备份磁带的基本 BACKUP 语法为:

BACKUP { DATABASE |LOG } database_name

TO TAPE = { 'physical_backup_device_name' | @physical_backup_device_name_var }

例如:

BACKUP LOG AdventureWorks2012   
   TO TAPE = '\\.\tape0';  
GO  

若要在 RESTORE 语句中指定物理磁带设备,基本语法为:

RESTORE { DATABASE | LOG } database_name

FROM TAPE = { 'physical_backup_device_name' | @physical_backup_device_name_var }

Tape-Specific 备份和恢复选项(Transact-SQL)

为便于磁带管理,BACKUP 语句提供以下特定于磁带的选项:

  • { NOUNLOAD | UNLOAD }

    可以控制备份或还原作后是否自动从磁带驱动器卸载备份磁带。 UNLOAD/NOUNLOAD 是一种会话设置,会在会话期间持续有效,除非通过指定替代项进行重置。

  • { REWIND |NOREWIND }

    可以控制是否在备份或还原操作后,SQL Server保持磁带打开状态,或者在磁带填满后释放并回绕磁带。 默认行为是回退磁带(REWIND)。

注释

有关 BACKUP 语法和参数的详细信息,请参阅 BACKUP (Transact-SQL)。 有关 RESTORE 语法和参数的详细信息,请参阅 RESTORE(Transact-SQL)RESTORE 参数(Transact-SQL),分别。

管理已开启的磁带

若要查看打开的磁带设备列表和装载请求的状态,请查询 sys.dm_io_backup_tapes 动态管理视图。 此视图显示所有打开的磁带。 其中包括那些在等待下一个 BACKUP 或 RESTORE 操作时暂时空闲的正在使用的磁带。

如果磁带意外打开,则释放磁带的最快方法是使用以下命令:RESTORE REWINDONLY FROM TAPE =backup_device_name。 有关详细信息,请参阅 RESTORE REWINDONLY (Transact-SQL)

使用 Azure Blob 存储服务

SQL Server 备份可以写入 Azure Blob 存储服务。 有关如何将 Azure Blob 存储服务用于备份的详细信息,请参阅 使用 Azure Blob 存储服务的 SQL Server 备份和还原

使用逻辑备份设备

逻辑备份设备是指向特定物理备份设备(磁盘文件或磁带驱动器)的可选用户定义名称。 逻辑备份设备允许在引用相应的物理备份设备时使用间接引用。

定义逻辑备份设备涉及将逻辑名称分配给物理设备。 例如,可以将逻辑设备 AdventureWorksBackups 定义为指向 Z:\SQLServerBackups\AdventureWorks2012.bak 文件或 \\.\tape0 磁带驱动器。 然后,备份和还原命令可以将 AdventureWorksBackups 指定为备份设备,而不是 DISK = 'Z:\SQLServerBackups\AdventureWorks2012.bak' 或 TAPE = '\\.\tape0'。

逻辑设备名称在服务器实例上的所有逻辑备份设备中必须是唯一的。 若要查看现有的逻辑设备名称,请查询 sys.backup_devices 目录视图。 此视图显示每个逻辑备份设备的名称,并描述相应物理备份设备的类型和物理文件名或路径。

定义逻辑备份设备后,在 BACKUP 或 RESTORE 命令中,可以指定逻辑备份设备,而不是设备的物理名称。 例如,以下语句将 AdventureWorks2012 数据库备份到 AdventureWorksBackups 逻辑备份设备。

BACKUP DATABASE AdventureWorks2012   
   TO AdventureWorksBackups;  
GO  

注释

在给定的 BACKUP 或 RESTORE 语句中,逻辑备份设备名称和相应的物理备份设备名称可互换。

使用逻辑备份设备的一个优点是,使用比长路径更简单。 如果计划将一系列备份写入同一路径或磁带设备,则使用逻辑备份设备可以帮助。 逻辑备份设备对于识别磁带备份设备特别有用。

可以编写备份脚本以使用特定的逻辑备份设备。 这样就可以切换到新的物理备份设备,而无需更新脚本。 切换涉及以下过程:

  1. 删除原始逻辑备份设备。

  2. 定义使用原始逻辑设备名称但映射到其他物理备份设备的新逻辑备份设备。 逻辑备份设备对于识别磁带备份设备特别有用。

镜像备份介质集

备份介质集的镜像可减少备份设备故障的影响。 这些故障尤其严重,因为备份是针对数据丢失的最后一道防线。 随着数据库的大小的增长,备份设备或介质发生故障的概率会增加,使备份不可还原。 镜像备份介质通过为物理备份设备提供冗余来提高备份的可靠性。 有关详细信息,请参阅镜像备份介质集(SQL Server)。

注释

镜像备份介质集仅在 SQL Server 2005 Enterprise Edition 及更高版本中受支持。

归档 SQL Server 备份

建议使用文件系统备份实用工具存档磁盘备份,并将存档存储在站点外。 使用磁盘的优点是使用网络将存档的备份写入站点外磁盘。 Azure Blob 存储服务可用作站点外存档选项。 可以上传磁盘备份,也可以直接将备份写入 Azure Blob 存储服务。

另一种常见的存档方法是将 SQL Server 备份写入本地备份磁盘,将其存档到磁带,然后将磁带存储在异地。

相关任务

指定磁盘设备(SQL Server Management Studio)

指定磁带设备(SQL Server Management Studio)

定义逻辑备份设备

使用逻辑备份设备

查看有关备份设备的信息

删除逻辑备份设备

另请参阅

SQL Server 备份设备对象
BACKUP (Transact-SQL)
维护计划
媒体集、媒体系列和备份集 (SQL Server)
RESTORE (Transact-SQL)
恢复 LABELONLY (Transact-SQL)
sys.backup_devices(Transact-SQL)
sys.dm_io_backup_tapes(Transact-SQL)
镜像备份媒体集 (SQL Server)