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

如何通过REST API在Azure SQL虚拟机上启用SQL Server实例AUTOPROTECT

排查Azure REST API启用SQL自动备份保护的脚本错误

问题概述

通过Azure REST API调用为Azure虚拟机上的SQL Server实例启用自动保护(autoprotect),使用AzureWorkloadSQLAutoProtectionIntent对象编写的PowerShell脚本运行失败,错误信息:

Error:
"code": "BMSUserErrorInvalidInput",

"message": "Input provided for the call is invalid. Please check the required inputs"

已核对所有资源ID并使用最新API版本,需排查脚本问题并获取正确操作步骤。

脚本问题排查

你的脚本存在以下关键问题:

  • 请求URL路径错误:启用自动保护的正确路径应为复数形式backupProtectionIntents,而非原脚本中的单数backupProtectionIntent。
  • 请求体字段错误:
    • 自动保护针对整个SQL实例,workloadItemType应设为SQLInstance而非SQLDataBase;
    • 自动保护场景下无需手动指定itemId,该字段应移除;
    • 缺少必填的protectionLevel字段,需添加值为"Default"的该字段。
  • JSON序列化深度不足:ConvertTo-Json默认深度为2,可能导致嵌套对象序列化不完整,需添加-Depth 10参数。

修正后的PowerShell脚本

$url = "https://management.azure.com/Subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.RecoveryServices/vaults/$vaultName/backupFabrics/Azure/backupProtectionIntents/$intentObjectName`?api-version=$apiVersion"

# Create Headers
$headers = @{
  "Authorization" = "Bearer $accessToken"
  "Content-Type" = "application/json"
}

# Request Body
$parentID = "/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.SqlVirtualMachine/SqlVirtualMachines/$serverName"

$body = @{
  "properties" = @{
      "backupManagementType" = "AzureWorkload";
      "policyId" = $policyId;    
      "protectionIntentItemType" = "AzureWorkloadSQLAutoProtectionIntent";
      "sourceResourceId" = $parentID; 
      "workloadItemType" = "SQLInstance";
      "protectionLevel" = "Default"
  }
} | ConvertTo-Json -Depth 10

# Invoke Rest Method
Invoke-RestMethod -Uri $url -Method PUT -Headers $headers -Body $body

使用REST API启用自动保护的正确步骤

  1. 收集必要资源信息

    • 订阅ID、资源组名、Recovery Services Vault名称
    • SQL虚拟机的资源ID(作为sourceResourceId)
    • 备份策略ID(作为policyId)
    • 自定义的保护意图对象名称(intentObjectName)
  2. 构造正确请求URL
    确保路径使用复数的backupProtectionIntents,并指定最新稳定API版本(如2024-04-01)。

  3. 构建合规请求体

    • 必须设置backupManagementType为AzureWorkload
    • 绑定有效的备份策略ID(policyId)
    • 指定protectionIntentItemType为AzureWorkloadSQLAutoProtectionIntent
    • sourceResourceId指向目标SQL虚拟机资源ID
    • workloadItemType设为SQLInstance
    • 添加protectionLevel字段,值为Default
  4. 发送PUT请求
    使用有效的Azure AD访问令牌,设置Content-Type为application/json,发送PUT请求到目标URL。

  5. 验证保护状态
    通过GET请求访问同一URL,检查返回结果中的protectionStatus是否为Protected,确认自动保护已生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 09:36:15