创建完整数据库备份 (SQL Server)

本主题介绍如何使用 SQL Server Management Studio、Transact-SQL 或 PowerShell 在 SQL Server 2014 中创建完整数据库备份。

注意

有关SQL Server备份到 Azure Blob 存储服务的信息,请参阅使用 Azure Blob 存储 服务SQL Server备份和还原

本主题内容

开始之前

限制和局限

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

  • 无法在早期版本的 SQL Server 中还原较新版本的 SQL Server创建的备份。

  • 有关详细信息,请参阅备份概述 (SQL Server)

建议

  • 随着数据库不断增大,完整备份需花费更多时间才能完成,并且需要更多的存储空间。 因此,对于大型数据库而言,您可以用一系列“差异数据库备份” 来补充完整数据库备份。 有关详细信息,请参阅差异备份 (SQL Server)

  • 你可以使用 sp_spaceused 系统存储过程估计完整数据库备份的大小。

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

安全性

针对数据库备份,TRUSTWORTHY 设置为 OFF。 有关如何将 TRUSTWORTHY 设置为 ON 的信息,请参阅 ALTER DATABASE SET Options (Transact-SQL)

从 2012 SQL Server 开始,PASSWORDMEDIAPASSWORD 选项已停止用于创建备份。 不过,您仍可以还原使用密码创建的备份。

权限

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

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

使用 SQL Server Management Studio

注意

使用 SQL Server Management Studio 指定备份任务时,可以通过单击“脚本”按钮并选择脚本目标来生成相应的 Transact-SQL BACKUP 脚本。

备份数据库

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

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

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

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

  5. 可以对任意恢复模式(FULLBULK_LOGGEDSIMPLE)执行数据库备份。

  6. “备份类型” 列表框中,选择 “完整”

    请注意,创建完整数据库备份后,可以创建差异数据库备份;有关详细信息,请参阅创建差异数据库备份 (SQL Server)

  7. 还可以根据需要选择 “仅复制备份”创建仅复制备份。 仅复制备份是SQL Server独立于常规备份序列SQL Server的备份。 有关详情,请参阅仅复制备份 (SQL Server)

    注意

    选择“差异” 选项时,无法创建仅复制备份。

  8. 对于“备份组件”,单击 。Database

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

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

  11. 通过单击 “磁盘”“类型”“URL”,选择备份目标的类型。 若要选择包含单个介质集的多个磁盘或磁带机(最多为 64 个)的路径,请单击 “添加” 。 选择的路径将显示在 “备份到” 列表框中。

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

  12. 若要查看或选择介质选项,请在 “选择页” 窗格中单击 “介质选项”

  13. 可以通过单击以下选项之一来选择 “覆盖介质” 选项:

    • 备份到现有介质集

      对于此选项,请单击 “追加到现有备份集”“覆盖所有现有备份集” 。 有关详细信息,请参阅本主题后面的 介质集、介质簇和备份集 (SQL Server)不熟悉的读者。

      或者选择 “检查介质集名称和备份集过期时间” ,以使备份操作对介质集和备份集的过期日期和时间进行验证。

      或者在 “介质集名称” 文本框中输入名称。 如果没有指定名称,将使用空白名称创建介质集。 如果指定了介质集名称,将检查介质(磁带或磁盘),以确定实际名称是否与此处输入的名称匹配。

      重要

      如果在 “常规” 页中选择了 “URL” 作为备份目标,则禁用此选项。 有关详细信息,请参阅 备份数据库 (媒体选项页)

      如果要使用加密,则请勿选择此选项。 如果选择此选项,则将禁用 “备份选项” 页中的加密选项。 追加到现有备份集时不支持加密。

    • 备份到新介质集并清除所有现有备份集

      对于该选项,请在 “新建介质集名称” 文本框中输入名称,并在 “新建介质集说明” 文本框中描述介质集(可选)。

      重要

      如果在 “常规” 页中选择了 “URL” ,则禁用此选项。 备份到 Azure 存储时,不支持这些操作。

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

  15. 如果备份到磁带驱动器(如同 “常规” 页的 “目标” 部分指定的一样),则 “备份后卸载磁带” 选项处于活动状态。 单击此选项可以激活 “卸载前倒带” 选项。

    注意

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

  16. 若要查看或选择备份选项,请在 “选择页” 窗格中单击 “备份选项”

  17. 指定备份集何时过期以及何时可以覆盖备份集而不用显式跳过过期数据验证:

    • 若要使备份集在特定天数后过期,请单击 “之后” (默认选项),并输入备份集从创建到过期所需的天数。 此值范围为 0 到 99999 天;0 天表示备份集将永不过期。

      默认值在“服务器属性”对话框的“默认备份媒体保留期 (天) 选项中设置 (数据库设置页) 。 若要访问它,请在对象资源管理器中右键单击服务器名称,选择属性,再选择“数据库设置” 页。

    • 若要使备份集在特定日期过期,请单击 “在” ,并输入备份集的过期日期。

      有关备份过期日期的详细信息,请参阅 BACKUP (Transact-SQL)

  18. SQL Server 2008 Enterprise 及更高版本支持 备份压缩。 默认情况下,是否压缩备份取决于 backup-compression default 服务器配置选项的值。 但是,不管当前服务器级默认设置如何,都可以通过选中 “压缩备份” 来压缩备份,并且可以通过选中 “不压缩备份” 来防止压缩备份。

    查看或更改当前备份压缩默认值

  19. 指定是否要对备份使用加密。 选择要用于加密步骤的加密算法,然后从现有证书或非对称密钥的列表中提供一个证书或非对称密钥。 SQL Server 2014 或更高版本中支持加密。 有关加密选项的更多详细信息,请参阅 备份数据库 (备份选项页)

注意

此外,还可以使用维护计划向导来创建数据库备份。

“使用 Transact-SQL”

创建完整数据库备份

  1. 执行 BACKUP DATABASE 语句可以创建完整数据库备份,同时指定:

    • 要备份的数据库的名称。

    • 写入完整数据库备份的备份设备。

    完整数据库备份的基本 Transact-SQL 语法为:

    BACKUP DATABASE database

    TO backup_device [ , ...n ]

    [ WITH with_options [ , ...o ] ] ;

    选项 说明
    database 要备份的数据库。
    backup_device [ , ...n ] 指定一个列表,它包含 1 至 64 个用于备份操作的备份设备。 您可以指定物理备份设备,也可以指定对应的逻辑备份设备(如果已定义)。 若要指定物理备份设备,请使用 DISK 或 TAPE 选项:

    { DISK | TAPE } =physical_backup_device_name

    有关详细信息,请参阅备份设备 (SQL Server)
    WITH with_options [ , ...o ] 您也可以指定一个或多个附加选项 o。 有关某些基本 WITH 选项的信息,请参阅步骤 2。
  2. (可选)指定一个或多个 WITH 选项。 下面描述了几个基本 WITH 选项。 有关所有 WITH 选项的信息,请参阅 BACKUP (Transact-SQL)

    • 基本备份集 WITH 选项:

      { COMPRESSION | NO_COMPRESSION }
      仅在 SQL Server 2008 企业版及更高版本中,指定是否对此备份执行备份压缩,并重写服务器级默认值。

      加密 (算法、服务器证书 |非对称密钥)
      仅在 SQL Server 2014 或更高版本中,指定要使用的加密算法以及要用于保护加密的证书或非对称密钥。

      DESCRIPTION = { ''text | @text_variable }
      指定说明备份集的自由格式文本。 该字符串最长可达 255 个字符。

      NAME = { backup_set_name | @backup_set_name_var }
      指定备份集的名称。 名称最长可达 128 个字符。 如果未指定 NAME,它将为空。

    • 基本备份集 WITH 选项:

      默认情况下,BACKUP 将备份追加到现有介质集中,并保留现有备份集。 若要显式指定此设置,请使用 NOINIT 选项。 有关追加到现有备份集的信息,请参阅媒体集、媒体系列和备份集 (SQL Server)

      或者,若要将备份介质格式化,可以使用 FORMAT 选项:

      FORMAT [ MEDIANAME**=** { media_name | @media_name_variable } ] [ MEDIADESCRIPTION = { text | @text_variable } ]
      当您第一次使用介质或者希望覆盖所有现有数据时可以使用 FORMAT 子句。 根据需要,可以为新介质指定介质名称和说明。

      重要

      当使用 BACKUP 语句的 FORMAT 子句时要十分小心,因为它会破坏以前存储在备份介质中的所有备份。

示例 (Transact-SQL)

A. 备份到磁盘设备

以下示例使用 FORMAT 创建新的媒体集,将完整的 AdventureWorks2012 数据库备份到磁盘。

USE AdventureWorks2012;  
GO  
BACKUP DATABASE AdventureWorks2012  
TO DISK = 'Z:\SQLServerBackups\AdventureWorks2012.Bak'  
   WITH FORMAT,  
      MEDIANAME = 'Z_SQLServerBackups',  
      NAME = 'Full Backup of AdventureWorks2012';  
GO  

B. 备份到磁带设备

以下示例将完整的 AdventureWorks2012数据库备份到磁带,并将备份追加到以前的备份。

USE AdventureWorks2012;  
GO  
BACKUP DATABASE AdventureWorks2012  
   TO TAPE = '\\.\Tape0'  
   WITH NOINIT,  
      NAME = 'Full Backup of AdventureWorks2012';  
GO  

C. 备份到逻辑磁带设备

下例为某个磁带驱动器创建一个逻辑备份设备, 然后,该示例将完整的 AdventureWorks2012 数据库备份到该设备。

-- Create a logical backup device,   
-- AdventureWorks2012_Bak_Tape, for tape device \\.\tape0.  
USE master;  
GO  
EXEC sp_addumpdevice 'tape', 'AdventureWorks2012_Bak_Tape', '\\.\tape0'; USE AdventureWorks2012;  
GO  
BACKUP DATABASE AdventureWorks2012  
   TO AdventureWorks2012_Bak_Tape  
   WITH FORMAT,  
      MEDIANAME = 'AdventureWorks2012_Bak_Tape',  
      MEDIADESCRIPTION = '\\.\tape0',   
      NAME = 'Full Backup of AdventureWorks2012';  
GO  

使用 PowerShell

  1. 使用 Backup-SqlDatabase cmdlet。 若要显式指示这是完整数据库备份,请使用其默认值Database指定 -BackupAction 参数。 对于完整数据库备份而言,此参数是可选的。

    下面的示例在服务器实例 MyDB 的默认备份位置创建数据库 Computer\Instance的完整数据库备份。 此示例也可以指定 -BackupAction Database

    Backup-SqlDatabase -ServerInstance Computer\Instance -Database MyDB -BackupAction Database  
    

设置和使用 SQL Server PowerShell 提供程序

Related Tasks

另请参阅

Backup Overview (SQL Server)
事务日志备份 (SQL Server)
介质集、介质簇和备份集 (SQL Server)
sp_addumpdevice (Transact-SQL)
BACKUP (Transact-SQL)
备份数据库(“常规”页)
备份数据库(“备份选项”页)
差异备份 (SQL Server)
完整数据库备份 (SQL Server)