You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从BLOB存储恢复Azure SQL时提示无法打开备份设备 访问被拒绝

问题根因与解决方法

核心触发原因

  • SAS令牌格式错误:Azure门户生成的SAS默认开头带?字符,创建凭据时如果直接填入带问号的SAS,会导致身份校验失败,触发权限报错。
  • 存储白名单配置错误:你此前将SSMS所在VM的公网IP加入存储白名单,但该恢复操作是Azure SQL实例直接发起请求拉取存储的备份文件,而非VM发起请求,所以存储白名单未放行Azure SQL实例的IP,导致访问被拒绝。
  • 凭据匹配错误:创建的凭据名称必须和恢复时使用的URL前缀完全一致,多/少末尾斜杠、字符拼写错误都会导致SQL无法匹配到对应凭据,无法完成身份认证。
  • SAS权限/有效期配置不符合要求:即使你确认SAS具备读写权限,也可能存在有效期已过期、SAS范围未覆盖目标备份文件、IP限制和SQL实例IP冲突的问题。
  • 权限不足:当前操作账号虽然有db owner权限,但缺少master库下凭据的访问权限,也会触发该报错。

解决步骤

  1. 先清理已创建的错误凭据,执行以下SQL:
USE master
DROP CREDENTIAL [https://imis20prodstorageaccount.blob.core.windows.net/backups]
GO
  1. 重新生成存储容器的SAS令牌,生成时确认:
  • 权限勾选Read、List
  • 有效期设置为超出当前操作时间至少24小时
  • 资源类型勾选「容器」、「对象」,服务类型选择Blob
  • 复制生成的SAS令牌后,删除开头的第一个?字符再保存备用
  1. 重新创建凭据,确保凭据名称和恢复时使用的URL前缀完全一致:
USE master
CREATE CREDENTIAL [https://imis20prodstorageaccount.blob.core.windows.net/backups]
WITH IDENTITY='SHARED ACCESS SIGNATURE',
SECRET = '处理后的不带开头问号的SAS令牌'
GO
  1. 调整存储账户防火墙配置:在Azure门户存储账户的网络设置页,添加你的Azure SQL实例的公网出站IP到白名单(该IP可在Azure SQL实例的概述页查询到)。
  2. 先执行测试命令验证权限:
RESTORE FILELISTONLY FROM URL =
'https://imis20prodstorageaccount.blob.core.windows.net/backups/GGC_iMIS-5-10-21.BAK'

测试无报错后,再执行正式的数据库恢复命令即可。

内容的提问来源于stack exchange,提问作者Chris Green

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 14:36:01