WSL2 Ubuntu无法连接本地Windows SQL Server 报错数据源未找到
问题描述
运行WSL2环境的Ubuntu 22.04,尝试连接本机Windows系统上的SQL Server,已安装unixodbc。
现有配置
/etc/odbc.ini 配置
[MYDSN] Driver="ODBC Driver 18 for SQL Server" Server=192.168.1.100 Port=1433 Database=mydb
/etc/odbcinst.ini 配置
[ODBC Driver 18 for SQL Server] Description=Microsoft ODBC Driver 18 for SQL Server Driver=/opt/microsoft/msodbcsql18/lib64/libmsodbcsql-18.3.so.2.1 UsageCount=1
系统ODBC环境信息(sudo odbcinst -j 输出)
DRIVERS............: /etc/odbcinst.ini SYSTEM DATA SOURCES: /etc/odbc.ini FILE DATA SOURCES..: /etc/ODBCDataSources USER DATA SOURCES..: /root/.odbc.ini SQLULEN Size.......: 8 SQLLEN Size........: 8 SQLSETPOSIROW Size.: 8
执行命令及报错
执行命令:
isql -v MYDSN sa "mypassword"
报错信息:
[IM002][unixODBC][Driver Manager]Data source name not found and no default driver specified [ISQL]ERROR: Could not SQLConnect
已确认:ping通SQL Server IP,Windows防火墙开放1433端口,SQL Server开启远程连接并启用TCP/IP协议。
解决方案
1. 修正配置文件权限
确保普通用户能读取系统级ODBC配置文件:
sudo chmod 644 /etc/odbc.ini /etc/odbcinst.ini sudo chown root:root /etc/odbc.ini /etc/odbcinst.ini
2. 移除Driver字段的引号
odbc.ini中Driver字段的引号会导致驱动识别失败,修改配置:
[MYDSN] Driver=ODBC Driver 18 for SQL Server Server=192.168.1.100,1433 Database=mydb
备注:将IP和端口合并为
192.168.1.100,1433,避免部分驱动对独立Port字段支持不佳。
3. 验证驱动文件有效性
检查驱动文件是否存在且依赖完整:
# 确认驱动文件存在 ls -l /opt/microsoft/msodbcsql18/lib64/libmsodbcsql-18.3.so.2.1 # 检查依赖库是否缺失 ldd /opt/microsoft/msodbcsql18/lib64/libmsodbcsql-18.3.so.2.1
若有缺失依赖,安装对应库(如libssl-dev、libkrb5-dev)。
4. 正确执行isql命令
- 避免用
sudo执行(会读取root用户的DSN配置),直接用普通用户执行:isql -v MYDSN sa "mypassword" - 若必须用sudo,指定系统DSN路径:
sudo ODBCINI=/etc/odbc.ini isql -v MYDSN sa "mypassword"
5. 添加加密兼容参数(可选)
SQL Server Driver 18默认强制加密,若未配置证书,添加参数跳过验证:
[MYDSN] Driver=ODBC Driver 18 for SQL Server Server=192.168.1.100,1433 Database=mydb TrustServerCertificate=YES
内容的提问来源于stack exchange,提问作者Scott Parrish
相关产品推荐
相关产品推荐

