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

Azure DevOps脚本Invoke-Sqlcmd报错,求排查破坏性变更及修复方案

问题分析与修复方案

已知变更背景

微软托管的ubuntu-latest镜像在2025年6月17日晚至18日凌晨完成了.NET Runtime环境的版本更新,替换了System.Runtime、System.Management.Automation等核心依赖程序集,导致Azure PowerShell 8.3与SqlServer模块的依赖兼容性断裂,这是触发本次错误的直接原因。

修复方案

1. 锁定SqlServer模块兼容版本

在安装SqlServer模块时指定与Azure PowerShell 8.3兼容的稳定版本,避免自动拉取最新的不兼容版本:

Install-Module -Name SqlServer -RequiredVersion 22.1.1 -Force -AllowClobber

2. 手动加载兼容的核心程序集

在脚本开头添加强制加载对应版本程序集的命令,绕过自动依赖解析的问题:

# 加载兼容版本的System.Runtime
Add-Type -Path "/usr/share/dotnet/shared/Microsoft.NETCore.App/6.0.*/System.Runtime.dll"
# 加载兼容版本的System.Management.Automation
Add-Type -Path "/usr/share/dotnet/shared/Microsoft.NETCore.App/6.0.*/System.Management.Automation.dll"

3. 切换至固定版本的Ubuntu代理镜像

将管道的vmImage从ubuntu-latest改为ubuntu-22.04,该镜像环境配置更稳定,不会自动同步最新的.NET Runtime更新,从根源避免此类兼容性问题:

pool:
  vmImage: 'ubuntu-22.04'

4. 配置.NET运行时回退策略

在DeploymentScript的Bicep定义中添加DOTNET_ROLL_FORWARD环境变量,强制使用兼容的.NET运行时版本:

resource sqlDeploymentScript 'Microsoft.Resources/deploymentScripts@2023-08-01' = {
  name: 'your-script-name'
  location: resourceGroup().location
  kind: 'AzurePowerShell'
  properties: {
    azPowerShellVersion: '8.3'
    environmentVariables: [
      {
        name: 'DOTNET_ROLL_FORWARD'
        value: 'LatestMinor'
      }
    ]
    scriptContent: '''
    # 你的原有脚本逻辑
    '''
    cleanupPreference: 'OnSuccess'
    retentionInterval: 'PT1H'
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 20:35:09