首页 > 解决方案 > 用于将数据库从 Blob 存储还原到托管实例的 Azure 自定义脚本

问题描述

我需要 PS 中的后 VM 部署脚本来将位于 Blob 存储中的 .BAK 文件还原到 Azure 托管实例。我可以使用 SMSS 手动执行此操作,但在尝试从 SQL 查询恢复文件时出现以下错误(下面链接中的错误图像,因为我没有足够的代表来发布图像)

查询我实际上正在运行:

CREATE CREDENTIAL blobstorage
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = '$StrgAccSAS';

RESTORE DATABASE [$DBName] 
FROM URL = '$URL'
WITH CREDENTIAL 'blobstorage';

执行脚本时正确传递请求的参数。

恢复错误

标签: sqlazuressmsazure-sql-managed-instance

解决方案


使用您创建凭据时,SHARED ACCESS SIGNATURE必须

  • 将凭据命名为与容器路径相同
  • 它必须以 https 开头
  • 它不能包含尾部正斜杠

完成此操作后,您就不会(并且不能在托管实例中)使用该WITH CREDENTIAL选项。SQL 将使用您设置的与您要从中恢复的 URL 匹配的凭据:

RESTORE DATABASE [$DBName] 
FROM URL = '$URL'

推荐阅读