在本快速入门中,使用 SQL Server Management Studio (SSMS) 将数据库从 Azure Blob 存储还原到 Azure SQL 托管实例。 本快速入门使用共享访问签名 (SAS) 密钥从公开可用的备份文件还原 Wide World Importers 示例数据库。
注意
有关使用 Azure 数据库迁移服务进行迁移的详细信息,请参阅教程:使用数据库迁移服务将 SQL Server 迁移到 Azure SQL 托管实例。
先决条件
本快速入门:
- 使用创建 SQL 托管实例快速入门中的资源。
- 需要最新版本的 SSMS。
- 要求 SSMS 连接到 SQL 托管实例。 有关连接方法,请参阅以下快速入门:
- 对 SQL 托管实例启用公共终结点。 对于本快速入门,建议使用此方法。
- 从 Azure VM 连接到 SQL 托管实例。
- 配置从本地到 SQL 托管实例的点到站点连接。
注意
有关使用 Blob 存储与共享访问签名密钥备份和还原 SQL Server 数据库的详细信息,请参阅将 SQL Server 备份到 URL。
使用还原向导从备份文件中进行还原
在 SSMS 中,执行以下部分中的步骤,使用 还原 向导将 Wide World Importers 数据库还原到 SQL 托管实例。 数据库备份文件存储在预配置的 Blob 存储帐户中。
打开还原助手
打开 SSMS 并连接到 SQL 托管实例。
在 对象资源管理器中,右键单击 SQL 托管实例 的数据库文件夹, 然后选择 “还原数据库...” 以打开 “还原 ”向导。
选择备份源
在 “还原 ”向导中,选择省略号(...)以选择要还原的备份集的源。
在“选择备份设备”中,选择“添加”。 在“备份媒体类型”中,“URL”是唯一可用的选项,因为它是唯一受支持的源类型。 选择“确定”。
在“选择备份文件位置”中,从三个选项中选择一个,以提供有关备份文件位置的信息:
- 从“Azure 存储容器”列表中选择预注册的存储容器。
- 输入新的存储容器和共享访问签名。 将为你注册一个新的 SQL 凭据。
- 选择“添加”以浏览 Azure 订阅中的更多存储容器。
如果选择“添加”,请转到下一部分 - 浏览 Azure 订阅存储容器。 如果使用其他方法提供备份文件的位置,请跳至还原数据库。
若要还原可公开访问的只读存储中的 Wide World Importers 示例数据库,请提供值
https://mitutorials.blob.core.windows.net/examples/
并在“共享访问签名”字段提供任意值(如SAS
)。
浏览 Azure 订阅存储容器
注意
从可公开访问的只读 Azure Blob 存储还原 WideWorldImporters
示例数据库不需要执行这些步骤,但要从您自己的 Azure Blob 存储还原数据库则需要执行这些步骤。
在连接到订阅之前,需要配置云环境。 请导航至“工具”并选择“选项”,然后在“Azure 服务”下的“Azure 云”选项中选择“AzureChinaCloud”。
在“连接到 Microsoft 订阅”中,选择“登录”以登录到 Azure 订阅:
登录到 Azure 帐户,以在 Azure 中启动会话。
选择包含备份文件的存储帐户的订阅。
选择包含备份文件的存储帐户。
选择包含备份文件的 blob 容器。
输入共享访问策略的到期日期并选择“创建凭据”。 系统将创建一个具有正确权限的共享访问签名。 选择“确定”。
还原数据库
选择存储容器后,应会看到“在 Microsoft Azure 上定位备份文件”对话框。
在左侧窗格中,展开文件夹结构以显示包含备份文件的文件夹。 在右窗格中,选择与要还原的备份集相关的所有备份文件,然后选择“确定”。 例如,以下屏幕截图显示了包含
WideWorldImporters
示例数据库的可公开访问只读 Blob 存储:SSMS 将验证备份集。 完成此过程最多需要几秒钟。 持续时间取决于备份集的大小。
如果已验证备份,则需要为要还原的数据库指定名称。 默认情况下,在“目标”下,“数据库”框包含备份集数据库的名称。 若要更改名称,对“数据库”输入新名称。 选择“确定”。
还原过程启动。 持续时间取决于备份集的大小。
还原过程完成后,一个对话框会显示还原成功。 选择“确定”。
在“对象资源管理器”中,选择“刷新”以检查还原的数据库。
使用 T-SQL 从备份文件还原
作为 还原 向导的替代方法,可以使用 T-SQL 语句还原数据库。 在 SSMS 中,按照以下步骤使用 T-SQL 将 Wide World Importers 数据库还原到 SQL 托管实例。 数据库备份文件存储在预配置的 Blob 存储帐户中。
打开 SSMS 并连接到 SQL 托管实例。
在 对象资源管理器中,右键单击 SQL 托管实例,然后选择“ 新建查询 ”以打开新的查询窗口。
运行下面的 T-SQL 语句,它使用公共可用的预配置存储容器和共享访问签名密钥在 SQL 托管实例中创建凭据。
重要
-
CREDENTIAL
必须与容器路径匹配,以https
开头,结尾不能包含正斜杠。 -
IDENTITY
必须为SHARED ACCESS SIGNATURE
。 -
SECRET
必须是共享访问签名令牌,且不能包含前导?
。 - 此示例中省略了
SECRET
,因为存储帐户为公共可用。 如果使用未公开提供的存储帐户,则必须提供共享访问签名令牌。
CREATE CREDENTIAL [https://mitutorials.blob.core.windows.net/examples/WideWorldImporters-Standard.bak] WITH IDENTITY = 'SHARED ACCESS SIGNATURE';
上一示例中的凭据路径提供对单个文件的访问权限。 还可以创建文件夹路径的共享访问签名令牌,例如:
CREATE CREDENTIAL [https://<your storage>.blob.core.chinacloudapi.cn/databases/backups/] WITH IDENTITY = 'SHARED ACCESS SIGNATURE' , SECRET = '<your shared access signature>'; -- omit the leading ?
-
若要检查凭据是否正常工作,请运行以下语句,该语句使用 URL 来获取备份文件列表。
RESTORE FILELISTONLY FROM URL = 'https://mitutorials.blob.core.windows.net/examples/WideWorldImporters-Standard.bak';
运行以下语句,还原示例 Wide World Importers 数据库。
RESTORE DATABASE [WideWorldImportersExample] FROM URL = 'https://mitutorials.blob.core.windows.net/examples/WideWorldImporters-Standard.bak';
提示
如果收到
Error: 3201
或Operating system error 86(The specified network password is not correct.)
,这可能是因为 SAS 凭据(在前面的步骤中创建)创建时不正确。DROP CREDENTIAL
然后重新创建,审核凭据名称、标识和机密。运行以下语句跟踪还原过程的状态。
SELECT session_id as SPID, command, a.text AS Query, start_time, percent_complete , dateadd(second,estimated_completion_time/1000, getdate()) as estimated_completion_time FROM sys.dm_exec_requests r CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) a WHERE r.command in ('BACKUP DATABASE','RESTORE DATABASE');
还原过程完成后,在“对象资源管理器”中查看数据库。 可以使用 sys.dm_operation_status 视图验证是否已还原数据库。
注意
数据库还原操作是异步且可重试的。 如果连接失败或超时过期,可能会在 SSMS 中得到一个错误。 SQL 托管实例在后台继续尝试还原数据库,你可以使用 sys.dm_exec_requests 和 sys.dm_operation_status 视图来跟踪还原过程的进度。
在还原过程的某些阶段,系统视图中会显示唯一标识符,而不是实际的数据库名称。 要了解 RESTORE
语句行为差异,请参阅 SQL Server 和 Azure SQL 托管实例之间的 T-SQL 差异。