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

Azure SQL Server VM无变更重部署触发排序规则不允许更新错误

问题原因及解决办法

原因分析

Azure SQL Server虚拟机的资源提供程序存在校验逻辑限制:已部署实例的排序规则不允许执行任何更新操作,哪怕模板中指定的排序规则与现有实例完全一致,部署引擎仍会将该字段的存在识别为更新请求,进而触发SqlServerSettingCollationNotAllowedToUpdate错误。首次部署时排序规则属于初始化配置,因此可以正常执行;后续重部署时,即使未修改值,校验逻辑仍会拦截该字段的传递。

解决办法

1. 条件化指定排序规则(推荐)

通过Bicep的条件语法,仅在新建虚拟机时指定排序规则,更新时自动跳过该字段,既保证新环境使用正确排序规则,又避免更新时触发错误:

resource sqlVm 'Microsoft.SqlVirtualMachine/sqlVirtualMachines@2022-08-01' = {
  name: sqlVmName
  location: location
  properties: {
    // 其他资源属性...
    sqlInstanceSettings: {
      maxDop: 0
      isOptimizeForAdHocWorkloadsEnabled: false
      // 仅当资源不存在时(新建)才包含collation字段
      ${if(!exists(resourceId('Microsoft.SqlVirtualMachine/sqlVirtualMachines', sqlVmName)))}: {
        collation: 'Latin1_General_CI_AS'
      }
      minServerMemoryMB: 0
      maxServerMemoryMB: 2147483647
      isLpimEnabled: false
      isIfiEnabled: false
    }
  }
}

2. 使用ignoreChanges忽略字段校验

在资源块上添加@ignoreChanges装饰器,告知ARM部署引擎忽略sqlInstanceSettings.collation字段的任何变更(包括值相同的情况):

@ignoreChanges('sqlInstanceSettings.collation')
resource sqlVm 'Microsoft.SqlVirtualMachine/sqlVirtualMachines@2022-08-01' = {
  name: sqlVmName
  location: location
  properties: {
    // 其他资源属性...
    sqlInstanceSettings: {
      maxDop: 0
      isOptimizeForAdHocWorkloadsEnabled: false
      collation: 'Latin1_General_CI_AS'
      minServerMemoryMB: 0
      maxServerMemoryMB: 2147483647
      isLpimEnabled: false
      isIfiEnabled: false
    }
  }
}

3. 重置SQL VM管理扩展

若上述方法无效,可尝试重置SQL Server虚拟机的管理扩展:

  • 登录Azure门户,找到目标SQL VM
  • 进入“扩展”选项卡,选择SqlIaasExtension
  • 点击“卸载”,等待卸载完成后重新部署扩展
  • 再次执行Bicep部署

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 19:48:17