备份设备 (SQL Server)
在对SQL Server数据库执行备份操作期间,备份) (备份数据将写入物理备份设备。 将介质集中的第一个备份写入物理备份设备时,便会初始化此备份设备。 包含一个或多个备份设备的集合的备份构成一个介质集。
本主题内容:
术语和定义
备份磁盘 (backup disk)
包含一个或多个备份文件的硬盘或其他磁盘存储介质。 备份文件是常规操作系统文件。
介质集 (media set)
备份介质(磁带或磁盘文件)的有序集合,它使用固定类型和数量的备份设备。 有关媒体集的详细信息,请参阅媒体集、媒体系列和备份集 (SQL Server) 。
物理备份设备 (physical backup device)
磁带机或操作系统提供的磁盘文件。 可以将备份数据写入 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
注意
默认位置存储在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.n\MSSQLServer 下的 BackupDirectory注册表项中。
备份到网络共享文件
若要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 | @ }
磁带专用的 BACKUP 选项和 RESTORE 选项 (Transact-SQL)
为了便于磁带管理,BACKUP 语句提供了下列磁带专用的选项:
{ NOUNLOAD | UNLOAD }
您可以控制在备份或还原操作后备份磁带是否自动从磁带机卸载。 UNLOAD/NOUNLOAD 这一会话设置可在整个会话期间存在,或者在通过指定其他设置而进行重置之前一直存在。
{ REWIND | NOREWIND }
可以控制SQL Server在备份或还原操作后保持磁带保持打开状态,或在磁带填充后释放和倒带磁带。 默认行为是倒带 (REWIND)。
注意
有关 BACKUP 语法和参数的详细信息,请参阅 BACKUP (Transact-SQL) 。 有关 RESTORE 语法和参数的详细信息,请参阅 RESTORE (Transact-SQL) 和 RESTORE Arguments (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 语句中,逻辑备份设备名称和相应的物理备份设备名称可以互换。
使用逻辑备份设备的一个优点是比使用长路径简单。 如果准备将一系列备份数据写入相同的路径或磁带设备,则使用逻辑备份设备非常有用。 逻辑备份设备对于标识磁带备份设备尤为有用。
可以编写一个备份脚本以使用特定逻辑备份设备。 这样,您无需更新脚本即可切换到新的物理备份设备。 切换涉及以下过程:
删除原来的逻辑备份设备。
定义新的逻辑备份设备,新设备使用原来的逻辑设备名称,但映射到不同的物理备份设备。 逻辑备份设备对于标识磁带备份设备尤为有用。
镜像备份介质集
镜像备份介质集可减小备份设备故障的影响。 由于备份是防止数据丢失的最后防线,因此备份设备出现故障的后果是非常严重的。 随着数据库不断增大,备份设备或介质发生故障致使备份不可还原的可能性也相应增加。 镜像备份介质通过提供物理备份设备冗余来提高备份的可靠性。 有关详细信息,请参阅镜像备份介质集 (SQL Server) 。
注意
镜像备份介质集仅在 SQL Server 2005 Enterprise Edition 及更高版本中受支持。
SQL Server 备份数据存档
建议您使用文件系统备份实用工具对磁盘备份数据进行存档,并将存档存储在另一个位置。 使用磁盘的优点是您可以使用网络将已存档的备份数据写入另一个位置的磁盘。 Azure Blob 存储服务可作为站外存档选项。 可以上载磁盘备份,或直接将备份写入 Azure Blob 存储服务。
另一种常见的存档方法是将SQL Server备份写入本地备份磁盘,将其存档到磁带,然后将磁带存储在异地。
Related Tasks
指定磁盘设备 (SQL Server Management Studio)
指定磁带设备 (SQL Server Management Studio)
定义逻辑备份设备
BackupDevice (SMO)
使用逻辑备份设备
查看有关备份设备的信息
删除逻辑备份设备
另请参阅
SQL Server,备份设备对象
BACKUP (Transact-SQL)
维护计划
介质集、介质簇和备份集 (SQL Server)
RESTORE (Transact-SQL)
RESTORE LABELONLY (Transact-SQL)
sys.backup_devices (Transact-SQL)
sys.dm_io_backup_tapes (Transact-SQL)
镜像备份介质集 (SQL Server)