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

将本地SQL Server数据库备份到Azure Blob存储时出现400错误请求

SQL Server备份到Azure Blob存储报400 Bad Request错误排查方案

错误详情

Msg 3271, Level 16, State 1, Line 8
A nonrecoverable I/O error occurred on file
"https://mystorageaccount.blob.core.windows.net/mycontainer/AdventureWorks2016.bak:"
Backup to URL received an exception from the remote endpoint. Exception Message:
The remote server returned an error: (400) Bad Request..
Msg 3013, Level 16, State 1, Line 8
BACKUP DATABASE is terminating abnormally.

已执行操作

  • 创建凭据:
CREATE CREDENTIAL [testcred] WITH IDENTITY = 'mystorageaccount'  
,SECRET = 'storage account key';
  • 备份命令:
BACKUP DATABASE AdventureWorks2014  
TO URL = 'https://mystorageaccount.blob.core.windows.net/mycontainer/AdventureWorks2016.bak'   
      WITH CREDENTIAL = 'testcred'   
     ,COMPRESSION  
     ,STATS = 5;  
GO

已尝试的排查动作

  • 切换通用用途存储v1/v2,错误未解决
  • 替换为SAS令牌认证,同样报错
  • 在SQL Server 2014 Express、2017 Express上测试,结果一致

排查与解决步骤

  1. 修正Blob URL格式
    从错误信息可见目标URL末尾多了一个冒号: ,这是典型的格式错误,会直接触发400请求错误。检查备份命令中的URL是否存在笔误,确保文件名和路径无多余符号,Blob名称不能包含\ / : * ? " < > |等非法字符。

  2. 验证容器权限与账户凭据

    • 若使用存储账户密钥:确认IDENTITY参数是存储账户的完整名称(无拼写错误),密钥为存储账户的主/辅助密钥完整值,同时确保存储账户拥有Storage Blob Data Contributor权限。
    • 若使用SAS令牌:确保令牌包含w(写入)、c(创建)权限,sr设为b(Blob资源类型),令牌未过期且不包含开头的?符号。
    • 容器访问级别:若使用专用容器,必须确保凭据拥有足够的写入权限,避免因权限不足导致的请求拒绝。
  3. 检查SQL Server版本兼容性

    • SQL Server 2014 Express需至少升级至SP1 CU2版本才能支持备份到Azure Blob存储,确认已安装最新累积更新。
    • SQL Server 2017 Express需安装最新补丁,修复已知的Azure存储兼容性问题。
  4. 网络连通性验证

    • 在SQL Server所在服务器上,通过浏览器或curl命令测试访问目标Blob容器的HTTPS端点(端口443),确认网络无防火墙、代理拦截。
    • 检查服务器是否能正常解析*.blob.core.windows.net域名,排除DNS解析问题。
  5. 存储端功能验证
    使用Azure存储资源管理器连接目标存储账户,手动上传测试文件至容器,确认存储账户和容器的写入功能正常,排除存储服务本身的问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 22:56:29