快速入门:SQL 备份和还原到 Azure Blob 存储

适用于: SQL Server 2016 (13.x) 及更高版本 Azure SQL 托管实例

本快速入门可帮助你了解如何将备份写入 Azure Blob 存储以及如何从中还原。 本文介绍了如何创建 Azure Blob 存储容器,将备份写入 Azure Blob 存储,然后执行还原。

注意

SQL Server 2012 SP1 CU2 引入了对备份到 Azure Blob 存储的支持。 SQL Server 2014 及更早版本不支持本快速入门文章中介绍的共享访问签名 (SAS)。

对于 SQL Server 2014 及更早版本,请使用 教程:SQL Server 2014 备份和还原到 Microsoft Azure Blob 存储

先决条件

要完成本快速入门,你必须熟悉 SQL Server 备份和还原概念以及 T-SQL 语法。 需要 Azure 存储帐户、SQL Server Management Studio (SSMS),以及对运行 SQL Server 的服务器或 Azure SQL 托管实例的访问权限。 此外,用于发出 BACKUP 和 RESTORE 命令的帐户应属于具有“更改任意凭据”权限的 db_backupoperator数据库角色。

创建 Azure Blob 存储容器

容器对 Blob 集进行分组。 所有 Blob 必须都在一个容器中。 一个存储帐户可含有无限数量的容器,但必须至少有一个容器。 一个容器可以存储无数个 Blob。

若要创建容器,请执行下列步骤:

  1. 打开 Azure 门户。

  2. 导航到自己的存储帐户。

  3. 选择该存储帐户,向下滚动到“Blob 服务”

  4. 选择“Blob”,然后选择“+ 容器”以添加一个新容器。

  5. 输入容器名称并记下指定的容器名称。 此信息在本快速入门稍后部分的 T-SQL 语句的 URL(备份文件的路径)中使用。

  6. 选择“确定”

    新建集装箱

注意

即使选择创建公共容器,SQL Server 备份和还原仍需要对存储帐户进行身份验证。 还可以使用 REST API 以编程方式创建容器。 有关详细信息,请参阅创建容器

创建测试数据库

在此步骤中,使用 SQL Server Management Studio (SSMS) 创建测试数据库。

  1. 启动 SQL Server Management Studio (SSMS) 并连接到 SQL Server 实例。
  2. 打开“新建查询”窗口
  3. 运行以下 TRANSACT-SQL (T-SQL) 代码来创建测试数据库。 刷新对象资源管理器中的“数据库”节点,查看新数据库。 SQL 托管实例上新建的数据库会自动启用 TDE,因此需要禁用它才能继续操作。
USE [master]
GO

-- Create database
CREATE DATABASE [SQLTestDB]
GO

-- Create table in database
USE [SQLTestDB]
GO
CREATE TABLE SQLTest (
    ID INT NOT NULL PRIMARY KEY,
    c1 VARCHAR(100) NOT NULL,
    dt1 DATETIME NOT NULL DEFAULT getdate()
)
GO

-- Populate table 
USE [SQLTestDB]
GO

INSERT INTO SQLTest (ID, c1) VALUES (1, 'test1')
INSERT INTO SQLTest (ID, c1) VALUES (2, 'test2')
INSERT INTO SQLTest (ID, c1) VALUES (3, 'test3')
INSERT INTO SQLTest (ID, c1) VALUES (4, 'test4')
INSERT INTO SQLTest (ID, c1) VALUES (5, 'test5')
GO

SELECT * FROM SQLTest
GO

-- Disable TDE for newly-created databases on SQL Managed Instance 
USE [SQLTestDB];
GO
ALTER DATABASE [SQLTestDB] SET ENCRYPTION OFF;
GO
DROP DATABASE ENCRYPTION KEY
GO

创建凭据

通过执行以下步骤,在 SQL Server Management Studio 中使用 GUI 创建凭据。 或者,也可以以编程方式创建凭据。

  1. 展开 SQL Server Management Studio(SSMS) 的对象资源管理器中的“数据库”节点

  2. 右键单击新的 SQLTestDB 数据库,将鼠标悬停在“任务”上,然后选择“备份...”以启动“备份数据库”向导

  3. 从“备份到”目标下拉列表中选择“URL”,然后选择“添加”以启动“选择备份目标”对话框

    备份到 URL

  4. 选择“选择备份目标”对话框上的“新建容器”以启动“连接到 Microsoft 订阅”窗口

    “选择备份目标”对话框窗口的屏幕截图,其中突出显示了“新建容器”选项。

  5. 通过选择“登录...”登录到 Azure 门户,然后完成登录过程

  6. 从下拉列表中选择你的订阅

  7. 从下拉列表中选择你的存储帐户

  8. 从下拉列表中选择以前创建的容器。

  9. 选择“创建凭据”以生成共享访问签名 (SAS)保存此值以供还原使用。

    创建凭据

  10. 选择“确定”以关闭“连接到 Microsoft 订阅”窗口。 这会填充“选择备份目标”对话框上的“Azure 存储容器”值。 选择“确定”以选择所选存储容器,然后关闭对话框

  11. 此时,可以跳到下一部分中的步骤 4 以执行数据库的备份,如果要继续使用 Transact-SQL 备份数据库,则可以关闭“备份数据库”向导

备份数据库

在此步骤中,使用 SQL Server Management Studio 中的 GUI 或 Transact-SQL (T-SQL) 将数据库 SQLTestDB 备份到 Azure Blob 存储帐户。

  1. 如果“备份数据库”向导尚未打开,则展开 SQL Server Management Studio(SSMS) 的对象资源管理器中的“数据库”节点

  2. 右键单击新的 SQLTestDB 数据库,将鼠标悬停在“任务”上,然后选择“备份...”以启动“备份数据库”向导

  3. 从“备份到”下拉列表中选择“URL”,然后选择“添加”以启动“选择备份目标”对话框

    备份到 URL

  4. 在“Azure 存储容器”下拉列表中选择上一步中创建的容器

    Azure 存储容器

  5. 选择“备份数据库”向导上的“确定”以备份数据库

  6. 成功备份数据库后,选择“确定”以关闭所有与备份相关的窗口

    提示

    可以通过选择“备份数据库”向导顶部的“脚本”来编写此命令后面的 Transact-SQL 的脚本:脚本命令

删除数据库

在此步骤中,先删除数据库再执行还原。 此步骤仅适用于本教程,但不太可能用于普通的数据库管理过程。 可以跳过此步骤,但之后将需要在托管实例上的还原过程中更改数据库的名称,或运行还原命令 WITH REPLACE 以便在本地成功还原数据库。

  1. 展开对象资源管理器中的“数据库”节点,右键单击 SQLTestDB 数据库,然后选择“删除”以启动“删除对象”向导
  2. 在托管实例上,选择“确定”以删除数据库。 在本地,选中“关闭现有连接”旁边的复选框,然后选择“确定”以删除数据库

还原数据库

在此步骤中,使用 SQL Server Management Studio 中的 GUI 或 Transact-SQL 还原数据库。

  1. 在 SQL Server Management Studio 的对象资源管理器中右键单击“数据库”节点,然后选择“还原数据库”

  2. 选择“设备”,然后选择省略号 (...) 以选择设备

    选择还原设备

  3. 从“备份介质类型”下拉列表中选择“URL”,然后选择“添加”以添加设备

    添加备份设备

  4. 从下拉列表中选择容器,然后将其粘贴在创建凭据时保存的共享访问签名 (SAS) 中。

    “选择备份文件位置”对话框的屏幕截图,其中已填充“共享访问签名”字段。

  5. 选择“确定”以选择备份文件位置

  6. 展开“容器”,然后选择备份文件所在的容器。

  7. 选择要还原的备份文件,然后选择“确定”。 如果未显示任何文件,则可能是使用了错误的 SAS 密钥。 可以按照上述步骤重新生成 SAS 密钥,以便添加容器。

    选择还原文件

  8. 选择“确定”,关闭“选择备份设备”对话框

  9. 选择“确定”以还原数据库

另请参阅

以下是一些建议阅读的主题,便于了解相关概念以及在将 Azure Blob 存储用于 SQL Server 备份时的最佳做法。