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

升级Teradata ODBC驱动后VB.NET连接失败,VBA可正常连接求助

升级Teradata ODBC驱动后VB.NET连接失败(VBA可正常连接)

问题现象

  • 升级Teradata ODBC驱动后,Excel VBA通过DSN或直接拼接连接字符串均可正常连接Teradata,确认ODBC连接本身无问题
  • VB.NET使用相同连接字符串连接时,报错:ERROR [08001] [Teradata][socket error] (439) WSA E HostUnreach: The Teradata server can't currently be reached over this network
  • 尝试多种连接字符串变体无效,改用Teradata.NET后出现System.Net.Dns.GetAddrInfo中的Socket异常
  • ping服务器名称可正常连通

解决方法

1. 匹配项目平台与驱动位数

Teradata ODBC驱动分32/64位,VBA默认使用32位(Office默认32位),如果VB.NET项目编译位数和驱动不匹配会导致连接失败:

  • 右键VB.NET项目 → 属性 → 生成 → 平台目标,改为和ODBC驱动对应的位数(比如32位)

2. 显式指定驱动与连接参数

在VB.NET连接字符串里明确指定驱动名称,避免自动选择错误版本:

' ODBC连接示例
Dim connStr As String = "Driver={Teradata};DBCName=你的服务器名;Uid=用户名;Pwd=密码;Encryption=Yes;"

使用Teradata.NET时,显式指定端口与超时参数:

' Teradata.NET连接示例
Dim connStr As String = "Data Source=你的服务器名;User ID=用户名;Password=密码;Port=1025;Connection Timeout=30;"

3. 替换服务器名为IP地址

虽然ping服务器名正常,但VB.NET的DNS解析逻辑可能和系统ping不同,尝试用IP地址替代服务器名测试:

' ODBC方式
Dim connStr As String = "Driver={Teradata};DBCName=服务器IP;Uid=用户名;Pwd=密码;"
' Teradata.NET方式
Dim connStr As String = "Data Source=服务器IP;User ID=用户名;Password=密码;"

4. 检查程序网络权限

确认VB.NET程序进程有访问Teradata默认端口(1025)的权限,部分防火墙会拦截特定程序的网络请求(ping用的ICMP协议不受此限制):

  • 临时关闭防火墙测试,或在防火墙上添加VB.NET程序的允许访问规则

5. 重装Teradata.NET驱动

若使用Teradata.NET出现DNS异常,卸载当前驱动后重新下载与ODBC驱动同版本的Teradata.NET安装包,确保驱动与项目使用的.NET框架版本兼容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 00:20:45