Windows-Latest DevOps构建代理SQLLocalDB版本不符,需升级支持ordinal参数
Azure DevOps CI构建代理升级SQLLocalDB至SQL Server 2022版本解决方案
问题描述
我的Azure DevOps CI构建流水线配置为运行在windows-latest构建代理上:
pool: vmImage: windows-latest
根据官方文档说明,windows-latest代理应预装SQLLocalDB v17,但执行以下脚本后显示实际版本为v15.0(对应SQL Server 2019):
- script: | sqllocaldb versions sqllocaldb info displayName: Check SQLLocalDB versions on build VM
因需要使用SQL Server 2022中string_split函数新增的ordinal参数,当前部署时触发错误:
*** Could not deploy package. Error SQL72014: Framework Microsoft SqlClient Data Provider: Msg 8144, Level 16, State 3, Procedure <procedure_name>, Line 42 Procedure or function STRING_SPLIT has too many arguments specified. Error SQL72045: Script execution error.
核心问题解答
SQL Server 2022有对应的SQLLocalDB版本(v16),该版本完全支持string_split的ordinal参数。
流水线中安装升级步骤
1. 安装SQL Server 2022 LocalDB
在流水线中添加PowerShell任务,下载并静默安装新版本:
- task: PowerShell@2 displayName: Install SQL Server 2022 LocalDB inputs: targetType: 'inline' script: | # 下载SQL Server 2022 LocalDB官方安装包 Invoke-WebRequest -Uri "官方下载地址" -OutFile "SqlLocalDB.msi" # 静默安装,必须同意许可条款 Start-Process msiexec.exe -ArgumentList "/i SqlLocalDB.msi /qn IACCEPTSQLLOCALDBLICENSETERMS=YES" -Wait # 验证安装后的版本 sqllocaldb versions
2. 创建新版本LocalDB实例
安装完成后,需重新创建实例以使用SQL Server 2022版本:
- script: | # 停止并删除默认旧实例(如果存在) sqllocaldb stop MSSQLLocalDB sqllocaldb delete MSSQLLocalDB # 创建SQL Server 2022版本的默认实例 sqllocaldb create MSSQLLocalDB 16.0 -s displayName: Recreate LocalDB Instance for SQL Server 2022
注意事项
windows-latest代理可能预装多个SQLLocalDB版本,需确保后续任务调用的是v16版本的实例。- 静默安装必须添加
IACCEPTSQLLOCALDBLICENSETERMS=YES参数,否则安装会失败。
内容的提问来源于stack exchange,提问作者Geezer
相关产品推荐
相关产品推荐

