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

无法从Google Colab连接远程SQL Server:驱动缺失及安装脚本失败求助

问题描述

我在服务器上安装了SQL Server 2019,托管着MyDB数据库。尝试在Google Colab中通过以下代码连接数据库:

import urllib.parse
import sqlalchemy

params = urllib.parse.quote_plus('Driver={ODBC Driver 17 for SQL Server};'
                      'Server=0.tcp.in.ngrok.io,*****;'
                      'Database=MyDB;'
                      'Username=****;'
                      'Password=****;'
                      'Trusted_Connection=yes;')

engine = sqlalchemy.create_engine("mssql+pyodbc:///?odbc_connect={}".format(params))
cnxn = engine.connect()

执行后报错:

Error: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'ODBC Driver 17 for SQL Server' : file not found (0) (SQLDriverConnect)")

之前用来安装驱动的脚本现在执行失败:

%%sh
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get -q -y install msodbcsql17

报错信息:

CalledProcessError: Command 'b'curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get -q -y install msodbcsql17
'' returned non-zero exit status 100.

需要解决驱动安装问题,成功连接到SQL Server。

解决方案

问题出在旧脚本使用的Ubuntu 16.04源已停止维护,而当前Google Colab运行的是Ubuntu 22.04(或更高版本),导致源无法访问。替换为对应版本的源即可解决:

步骤1:安装适配Colab的ODBC驱动17

执行以下更新后的脚本:

%%sh
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o /etc/apt/trusted.gpg.d/microsoft.gpg
curl https://packages.microsoft.com/config/ubuntu/22.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get -q -y install msodbcsql17 unixodbc-dev
  • 用gpg --dearmor替代apt-key add(apt-key已被官方废弃)
  • 替换源为Ubuntu 22.04版本,适配Colab当前系统
  • 额外安装unixodbc-dev,确保驱动依赖完整

步骤2:验证驱动安装结果

执行以下命令确认驱动已成功安装:

odbcinst -q -d -n "ODBC Driver 17 for SQL Server"

若输出驱动的路径信息,说明安装成功。

步骤3:调整连接代码并测试

注意:Colab是远程环境,Trusted_Connection=yes(Windows身份验证)无效,需改为Trusted_Connection=no,使用SQL Server账号密码验证:

import urllib.parse
import sqlalchemy

params = urllib.parse.quote_plus('Driver={ODBC Driver 17 for SQL Server};'
                      'Server=0.tcp.in.ngrok.io,*****;'
                      'Database=MyDB;'
                      'Username=****;'
                      'Password=****;'
                      'Trusted_Connection=no;')

engine = sqlalchemy.create_engine("mssql+pyodbc:///?odbc_connect={}".format(params))
# 测试连接
try:
    cnxn = engine.connect()
    print("连接成功!")
except Exception as e:
    print(f"连接失败:{e}")

额外注意事项

  • 确认ngrok隧道正常运行,端口转发配置正确
  • SQL Server防火墙需允许ngrok的IP访问对应端口
  • 确保所用SQL Server账号拥有MyDB的访问权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 01:52:47