求VB.NET通过Draytek VPN隧道用OLEDB连接SQL Server的最佳连接字符串
解决VB.NET通过OLEDB连接VPN网络中SQL Server的问题
推荐OLEDB连接字符串
针对跨VPN网络的SQL Server连接,优先使用OLE DB Driver 18 for SQL Server(微软推荐的最新驱动,支持现代加密和兼容性),连接字符串示例:
Dim connectionString As String = "Provider=MSOLEDBSQL;Data Source=目标SQL Server的IP地址,1433;Initial Catalog=你的数据库名;User ID=数据库账号;Password=数据库密码;Encrypt=Optional;"
如果需要兼容旧系统,可使用旧版SQL Native Client(不推荐长期使用):
Dim connectionString As String = "Provider=SQLNCLI11;Data Source=目标SQL Server的IP地址,1433;Initial Catalog=你的数据库名;User ID=数据库账号;Password=数据库密码;"
SSMS可连接但VB.NET失败的排查要点
目标平台不匹配
多数Draytek VPN客户端为32位程序,会在64位系统中创建独立的32位网络栈。如果你的VB.NET项目设置为Any CPU,在64位系统下会以64位进程运行,无法访问32位VPN的网络路由。解决方法:- 右键项目 → 属性 → 生成 → 目标平台,改为
x86。
- 右键项目 → 属性 → 生成 → 目标平台,改为
防火墙拦截
Windows防火墙可能拦截VB.NET编译后的EXE程序的网络请求。检查并添加出站规则,允许该EXE访问目标IP的1433端口。网络连通性验证
在VB.NET代码中添加简单的连通性测试(比如使用Ping类),或在命令行执行telnet 目标IP 1433,确认端口是否能正常访问。如果telnet无法连接,说明VPN路由或目标服务器防火墙存在问题。驱动版本兼容性
确保开发机器上安装了对应版本的OLEDB驱动,优先选择微软官方发布的最新稳定版。
内容的提问来源于stack exchange,提问作者Feras Abu Hammad
相关产品推荐
相关产品推荐

