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

Windows下Airflow通过ODBC连接MSSQL报IM002错误求助

解决Docker部署Airflow连接MSSQL的ODBC驱动问题

问题根源

本地Windows系统的Python能正常连接MSSQL,是因为你的Windows环境已经安装了MSSQL ODBC驱动并配置了相关DSN;但Airflow运行在Docker容器的Linux环境中,默认官方镜像未预装MSSQL ODBC驱动,且容器无法共享Windows本地的ODBC配置,因此抛出Data source name not found and no default driver specified错误。

解决方案:修改docker-compose.yaml并自定义Airflow镜像

需要通过自定义镜像为容器安装MSSQL ODBC驱动,同时调整数据库连接参数。

步骤1:创建自定义Dockerfile

在docker-compose.yaml同目录下创建Dockerfile,基于官方Airflow镜像添加驱动安装步骤:

FROM apache/airflow:2.9.1

USER root

# 安装unixODBC依赖及MSSQL ODBC驱动
RUN apt-get update && \
    apt-get install -y --no-install-recommends unixodbc unixodbc-dev curl && \
    # 添加微软软件源
    curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - && \
    curl https://packages.microsoft.com/config/debian/11/prod.list > /etc/apt/sources.list.d/mssql-release.list && \
    apt-get update && \
    # 静默安装MSSQL ODBC驱动18版本
    ACCEPT_EULA=Y apt-get install -y --no-install-recommends msodbcsql18

USER airflow

# 安装Python ODBC依赖库
RUN pip install --no-cache-dir pyodbc

步骤2:修改docker-compose.yaml

找到airflow-webserver、airflow-scheduler、airflow-worker这几个服务的image字段,替换为本地构建镜像的配置:

services:
  airflow-webserver:
    # 替换原image字段为以下内容
    build: .
    # 保留原有其他配置(ports、volumes等)不变

  airflow-scheduler:
    build: .
    # 保留原有其他配置不变

  airflow-worker:
    build: .
    # 保留原有其他配置不变

步骤3:调整Airflow数据库连接参数

容器内无法使用Windows本地的DSN配置,需改用无DSN的直接连接字符串:

  • 在Airflow UI的「连接」中,选择MSSQL类型,填写以下连接信息:
    • 连接字符串示例:
      Driver={ODBC Driver 18 for SQL Server};Server=tcp:<你的MSSQL服务器地址>,1433;Database=<数据库名>;Uid=<用户名>;Pwd=<密码>;Encrypt=yes;TrustServerCertificate=yes;Connection Timeout=30;
      
    • 或使用SQLAlchemy URI格式:
      mssql+pyodbc://<用户名>:<密码>@<服务器地址>:1433/<数据库名>?driver=ODBC+Driver+18+for+SQL+Server&Encrypt=yes&TrustServerCertificate=yes
      

步骤4:重新部署Airflow

执行以下命令重新构建镜像并启动服务:

docker-compose down
docker-compose up --build -d

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 14:41:00