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

跨网络使用Python连接云主机Tally ODBC报错问题咨询

跨外网连接云服务器Tally ODBC服务故障排查

问题背景

Tally部署在云服务器上,已完成客户端IP白名单配置、服务端9000端口开放,外网客户端使用如下Python代码发起连接:

import pyodbc    
conn = pyodbc.connect('Dsn=TallyODBC64_9000;Driver={Tally ODBC Driver};server=20.xx.xx.xx;port=9000')

代码运行抛出错误:

InterfaceError: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')

待确认问题:

  1. 本地客户端是否需要安装Tally ODBC驱动
  2. 现有连接配置的排查路径

解答

1. 本地客户端必须安装Tally ODBC驱动

ODBC是客户端侧的驱动层中间件,你现在拿到的IM002错误本身就说明本地ODBC驱动管理器找不到连接串指定的驱动和DSN,这一步和服务端配置没有关系。
Tally ODBC驱动不会随pyodbc预装,也不是主流操作系统自带组件,必须在发起连接的本地设备上安装。注意安装的驱动架构(32位/64位)必须和你本地使用的Python环境、pyodbc版本架构完全匹配,否则就算装了也识别不到。

2. 按以下优先级排查配置问题

  • 校验本地驱动注册状态
    打开本地ODBC数据源管理器:64位Python环境运行64位版odbcad32.exe,32位Python环境运行SysWOW64目录下的32位版odbcad32.exe,切换到「驱动」标签页,确认列表中存在Tally ODBC驱动,准确记录驱动的完整显示名称。大部分同类报错都是因为连接串里写的{Tally ODBC Driver}和系统实际注册的驱动名不匹配——比如实际名称可能是TallyODBC64_9000、带版本后缀的Tally ODBC Driver 9.0等,连接串里的驱动名必须和注册名完全一致,不能自行臆测填写。
  • 修正连接串写法
    如果你没有提前在ODBC管理器中手动创建名为TallyODBC64_9000的用户/系统DSN,就不要在连接串里加Dsn参数,否则ODBC管理器会优先查找对应名称的DSN,找不到就直接抛错。无DSN的连接串参考格式:
    # 大括号内的驱动名替换成你在ODBC管理器里查到的准确名称
    conn = pyodbc.connect('Driver={TallyODBC64_9000};Server=20.xx.xx.xx;Port=9000;')
    
    如果要使用DSN模式连接,必须先在ODBC管理器中新建对应名称的DSN,提前填好服务端IP、端口参数后再在代码里调用。
  • 验证服务端监听配置
    本地先执行telnet 20.xx.xx.xx 9000确认端口连通性。注意除了云平台安全组、服务器系统防火墙(Windows防火墙/iptables/firewalld)要放通9000端口入站规则外,还要检查Tally自身的配置:默认安装后Tally的ODBC服务只绑定127.0.0.1本地回环地址,必须手动把监听地址改成0.0.0.0,否则就算端口开放,外网流量也无法被Tally服务接收。
  • 校验版本匹配
    本地安装的Tally ODBC驱动大版本必须和云服务器上部署的Tally服务版本一致,跨大版本的驱动存在协议兼容问题,会导致连接失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 23:30:51