在 SQL Server 数据库上执行备份操作期间,将备份的数据(“备份”)写入物理备份设备。将介质集中的第一个备份写入物理备份设备时,便会初始化此备份设备。包含一个或多个备份设备的集合的备份构成一个介质集。
注意 |
---|
从 SQL Server 2012 SP1 累积更新 2 开始,支持 SQL Server 备份到 Windows Azure Blob 存储服务。有关详细信息,请参阅Backup and Restore Enhancements和使用 Windows Azure Blob 存储服务进行 SQL Server 备份和还原。 |
本主题内容:
本节内容:
如果在备份操作将备份数据追加到介质集时磁盘文件已满,则备份操作会失败。备份文件的最大大小由磁盘设备上的可用磁盘空间决定,因此,备份磁盘设备的适当大小取决于备份数据的大小。
磁盘备份设备可以是简单的磁盘设备,如 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\MSSQL11.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\Path\FileName。
例如:
BACKUP DATABASE AdventureWorks2012 TO DISK = '\\BackupSystem\BackupDisk1\AW_backups\AdventureWorksData.Bak'; GO
“逻辑备份设备”是指向特定物理备份设备(磁盘文件或磁带机)的可选用户定义名称。通过逻辑备份设备,您可以在引用相应的物理备份设备时使用间接寻址。
定义逻辑备份设备涉及为物理设备分配逻辑名称。例如,逻辑设备 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 和更高版本支持镜像备份介质集。 |