JDBC连接SQL Server 2008 R2失败问题求助
解决方案与排查步骤
咱们一步步来拆解这个问题,核心错误是java.net.UnknownHostException: MYPC——这说明你的Java程序压根找不到叫MYPC的机器,先从这个最基础的问题入手:
1. 修复主机名解析问题
UnknownHostException是当前最直接的障碍,你可以试试这两个办法:
- 直接用IP地址替换主机名:在SQL Server所在机器上打开CMD,运行
ipconfig拿到它的IP地址(比如192.168.1.100),然后把JDBC URL改成:jdbc:sqlserver://192.168.1.100\\SQLEXPRESS;databaseName=master - 测试主机名是否能被解析:在运行Eclipse的机器上CMD里输入
ping MYPC,如果ping不通,说明本地DNS或者hosts文件有问题。你可以手动编辑C:\Windows\System32\drivers\etc\hosts文件,添加一行[SQL Server机器IP] MYPC,保存后再ping试试。
2. 确保SQL Server Browser服务在运行
因为你连接的是命名实例(SQLEXPRESS),SQL Server Browser服务负责监听UDP 1434端口,告诉客户端这个实例用的是哪个TCP端口。如果它没跑,客户端根本找不到实例:
- 打开SQL Server配置管理器,找到「SQL Server Browser」服务,确认它的状态是「正在运行」。如果没启动,右键点「启动」,再把启动类型改成「自动」,避免重启后失效。
3. 检查防火墙端口是否开放
错误提示里特意提到了UDP 1434端口,这个必须开放才能让客户端获取实例端口信息:
- 在SQL Server所在机器的防火墙设置里,添加入站规则,允许UDP 1434端口的流量;
- 另外,还要确认SQL Server实例实际使用的TCP端口(通常SQLEXPRESS默认是1433,但可能被修改)也被允许通过防火墙。你可以在配置管理器的「SQL Server网络配置」→「SQLEXPRESS的协议」→「TCP/IP」→属性→「IP地址」标签里找到这个端口。
4. 完善Windows身份验证的JDBC配置
你当前的URL里没指定Windows身份验证的参数,SQL Server JDBC驱动需要明确配置才能用Windows身份登录:
- 把URL改成:
jdbc:sqlserver://[IP或主机名]\\SQLEXPRESS;databaseName=master;integratedSecurity=true - 同时要确保你的项目里有
sqljdbc_auth.dll文件(根据系统是32/64位选对应的版本),可以把它放在项目的lib目录,或者JRE的bin目录下。
5. 确认SQL Server允许远程连接
有时候SQL Server默认会禁用远程连接,需要手动开启:
- 打开SQL Server Management Studio,连接到SQLEXPRESS实例,右键点击实例→属性→连接,勾选「允许远程连接到此服务器」;
- 同时在「SQL Server网络配置」里,确保「SQLEXPRESS的协议」下的「TCP/IP」是启用状态。
按这个顺序排查下来,应该能解决你的连接问题。
内容的提问来源于stack exchange,提问作者gs650x
相关产品推荐
相关产品推荐

