我已经在 Windows 7 虚拟机中设置了 sql server express 2014,但是我无法使用 Ubuntu 主机上的 jTDS JDBC 驱动程序连接到它。我收到错误Could not retrieve database information
。我觉得我一定是在某个地方漏掉了某个步骤,但是在网上找不到我还没有尝试过的东西:
- 连接 URL 为
jdbc:jtds:sqlserver://192.168.56.1:1433/dbo;instance=SQLEXPRESS
- Windows 防火墙已在客户机上完全禁用。
- 我可以从主机 ping 客户机 IP 地址。
- 服务器和 SQL 浏览器服务正在运行。
netstat -a
在客户机上确认 TCP 0.0.0.0:1433 和 UDP 0.0.0.0:1434 正在监听。- 服务器日志显示
Listening on <All IPv4>:1433
- 表面区域配置器工具已启用 TCP/IP 并设置为侦听所有 IP 的端口 1433。
- SSMS 确认该服务器实例已启用远程访问。
- 我可以使用仅主机 IP 地址(192.168.56.1,与上文相同)和通过 JDBC 使用的相同 SQL 身份验证凭据从客户机上的 SSMS 连接到数据库。
telnet 192.168.56.1 1433
telnet 192.168.56.1:1434
来自主机的和都会立即失败Connection refused
,而来自客户机的相同命令则不会。
我觉得这是一个防火墙问题,因为我似乎能够从客户机内部连接到接口 IP 地址并从输出netstat
,但是在关闭 Windows 防火墙的情况下,我不确定下一步该做什么,甚至不知道从这里要采取什么诊断步骤。
答案1
我首先想到的是尝试消除主机专用适配器设置。过去,我对此只有过不好的体验。
我建议您克隆有问题的虚拟机,将两台 Windows 机器的网络类型都更改为桥接(以便它们可以连接到您的物理 LAN),然后启动它们并查看它们是否可以相互通信(从一台到另一台 ping 一下,也可以尝试共享和访问网络文件夹)。
这是我在遇到类似问题时通常会执行的简单测试,因为它从查找故障的方程中消除了主机操作系统。
如果两台 Windows 机器可以通信,请关闭其中一台,然后在将适配器更改为桥接模式后在分配给该机器的新 IP 上再次尝试 Ubuntu。
注意:如果您没有任何类型的 DHCP 服务(例如 LAN 上运行的路由器),则必须为 Windows 机器提供静态 IP 地址。
希望有所帮助。