注册

标题:Stata/MP 17.0 通过ODBC连接达梦数据库(DM8) 反复报错 SQLSTATE=08S01 (SOCKET失败),ODBC数据源测试却成功

ysywzw 2026/01/14 474 0

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:dm8_20251121_x86_win_64安装目录为 `D:\DMdba\DMbendi\DMsjk
【操作系统】:操作系统: Windows 11 64位
【CPU】:
【问题描述】
*:标题:Stata/MP 17.0 通过ODBC连接达梦数据库(DM8) 反复报错 SQLSTATE=08S01 (SOCKET失败),ODBC数据源测试却成功
环境信息:
•客户端: Stata/MP 17.0 (64位)
•ODBC驱动: DM8 ODBC DRIVER (来自达梦官方安装包)
问题描述:
我的最终目标是在Stata中通过ODBC查询达梦数据库的表。在ODBC数据源管理器(64位)中配置好数据源DM8_Server后,点击“测试”显示连接成功。但是,在Stata中使用 odbc query "DM8_Server"命令时,返回

The ODBC driver reported the following diagnostics
乱码
SQLSTATE=HY000 错误;

使用odbc query, connection("DRIVER={DM8 ODBC DRIVER};SERVER=localhost;PORT=5237;UID=XUEXI;PWD=...")(使用连接字符串)
命令时,返回SQLSTATE=08S01,错误信息“SOCKET连接失败

矛盾点(最关键信息):
1.✅ ODBC数据源管理器内测试连接成功。
2.✅ 使用达梦官方管理工具(manager.exe)用相同参数(localhost:5237, 用户XUEXI)可以成功连接并操作数据库。
3.❌ 在Stata中通过ODBC连接失败。
已进行的详细排查:
1.确认服务状态:达梦数据库服务 (DmServiceDMSERVER) 确认正在运行,并监听5237端口。
2.验证网络连通性:服务与网络基础正常(因为官方工具可连)。
3.检查ODBC配置:数据源DM8_Server配置正确(服务器=localhost,端口=5237,用户=XUEXI)。
4.修复环境变量:已将达梦的bin目录 (D:\DMdba\DMbendi\DMsjk\bin) 添加到系统PATH变量首位,并重启了电脑。
5.尝试多种连接方式:
odbc query "DM8_Server"(使用DSN)
odbc query, connection("DRIVER={DM8 ODBC DRIVER};SERVER=localhost;PORT=5237;UID=XUEXI;PWD=...")(使用连接字符串)
结果均报错误。
6.权限:已确保Stata以管理员身份运行。
错误信息:
在Stata中执行命令后返回:
The ODBC driver reported the following diagnostics
����SOCKET���ʧ��
SQLSTATE=08S01
r(682);

核心疑问:
为何ODBC数据源管理器可以成功连接,但Stata不行?这似乎表明问题不在基础的数据库连接层面,而在于Stata进程运行时与ODBC驱动交互的某个环节,例如驱动依赖库的加载、安全策略或Stata自身的ODBC插件实现。
希望得到您的指点:
1.这种“ODBC管理器成功而应用程序失败”的情况,最常见的原因是什么?
2.对于达梦数据库的ODBC驱动,是否有Stata特定的配置要求?
3.有哪些进一步的诊断工具或方法(如详细的ODBC日志)可以精确定位问题?
感谢您的时间和帮助!

附件
odbc数据源追踪日志
SQL - 副本.txt!20260113225310.png20260114091028.png20260114103245.png

回答 0
暂无回答
扫一扫
联系客服