如何在Azure DevOps/Pipelines中下载SQL Server ODBC驱动
Azure环境部署pyodbc连接SQL Server的ODBC驱动配置方案
目前没有专用的开箱即用Azure Pipeline任务可以一键安装你本地使用的同款SQL Server ODBC驱动,推荐通过脚本方式配置,能保证和本地开发环境的驱动版本完全一致,避免兼容性问题。
不同Azure运行场景的配置方式
- 使用微软托管Pipeline代理构建/运行代码
直接在Pipeline中添加对应操作系统的脚本步骤,静默安装和本地同版本的ODBC驱动即可,全程无需人工交互:- 若使用Ubuntu系列Linux代理:通过bash任务执行微软官方源的驱动安装命令,安装时自动同意许可协议即可,安装完成后pyodbc就能正常识别驱动。可根据本地驱动版本选择安装
msodbcsql18/msodbcsql17对应包,和本地大版本保持一致即可。 - 若使用Windows系列代理:通过PowerShell任务下载对应版本的驱动msi安装包,执行静默安装命令,传入接受许可协议的参数即可完成配置。
示例bash脚本片段(Ubuntu代理):
示例PowerShell脚本片段(Windows代理):# 导入微软官方包源公钥 curl 微软包源公钥地址 | sudo apt-key add - # 添加SQL Server驱动源 curl 对应Ubuntu版本的微软源地址 | sudo tee /etc/apt/sources.list.d/mssql-release.list sudo apt-get update # 静默安装ODBC 18版本驱动,自动同意EULA sudo ACCEPT_EULA=Y apt-get install -y msodbcsql18# 下载对应版本ODBC驱动安装包 Invoke-WebRequest -Uri "对应版本驱动官方下载地址" -OutFile "msodbcsql.msi" # 静默安装,自动同意许可协议 Start-Process msiexec.exe -Wait -ArgumentList '/i msodbcsql.msi /quiet /qn /norestart IACCEPTMSODBCSQLLICENSETERMS=YES' - 若使用Ubuntu系列Linux代理:通过bash任务执行微软官方源的驱动安装命令,安装时自动同意许可协议即可,安装完成后pyodbc就能正常识别驱动。可根据本地驱动版本选择安装
- 使用自托管Pipeline代理
直接在代理所在的物理机/虚拟机上提前安装和本地版本一致的ODBC驱动即可,后续Pipeline运行时不需要重复执行安装步骤。 - 部署到Azure App Service/Azure Function等PaaS服务运行
这类服务的官方运行镜像已经预装了常用版本的SQL Server ODBC驱动:Windows运行栈默认预装ODBC 17/18版本,Linux运行栈可通过平台自带的扩展功能开启驱动支持,不需要额外编写安装脚本,部署后直接运行代码即可。
注意事项
务必保证部署环境安装的ODBC驱动大版本和本地开发环境使用的版本一致,跨大版本可能出现连接字符串参数不兼容、TLS加密校验失败、字符集转义异常等问题,导致本地能跑的代码部署后连接失败。
内容的提问来源于stack exchange,提问作者user14736700
相关产品推荐
相关产品推荐

