我的计算机无法通过 JDBC 连接到 SQL Server 2012(超时),而其他计算机可以

Posted

技术标签:

【中文标题】我的计算机无法通过 JDBC 连接到 SQL Server 2012(超时),而其他计算机可以【英文标题】:My computer cannot connect through JDBC to SQL Server 2012 (times out) while others can 【发布时间】:2014-02-05 17:29:47 【问题描述】:

所以基本上,我无法通过 JDBC 通过我的 tomcat Web 应用程序和 SQuirreL 连接到 SQL Server 2012

我尝试替换多个版本的 sqljdbc jar 文件。奇怪的是,我的同事竟然能成功连接!

此外,所有 jar 都成功连接到不同的 SQL Server 2005。

SQL Server Management Studio 2005 express(在我的机器上)可以毫无问题地连接到 SQL Server 2005 和 2012。

Tomcat 资源设置:

<Resource auth="Container" description="a Database Connection" driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" logAbandoned="true" maxActive="300" maxIdle="50" maxWait="10000" name="jdbc/SomethingPool" password="PW" removeAbandoned="true" removeAbandonedTimeout="60" type="javax.sql.DataSource" url="jdbc:sqlserver://<SOMETHING>.<DOMAIN>.com:1433;databaseName=dbname;" username="USER"/>

旧的 SQL JDBC 版本(抱歉,不知道如何查看版本):

SQuirreL 测试连接超时 SQuirreL 连接 - 超时 Tomcat - 超时 其他开发者 SQuirreL - 成功! 其他开发者 Tomcat - 成功! SQL Server 2005 SQuirreL - 成功!

新的SQL JDBC版本(最近从http://msdn.microsoft.com/en-us/sqlserver/aa937724.aspx下载):

SQuirreL 测试连接 - 成功! 也很奇怪 SQuirreL 连接 - 超时 Tomcat - com.microsoft.sqlserver.jdbc.SQLServerException:语句未返回结果集。 其他开发人员 SQuirreL - N/A 其他开发者 Tomcat - N/A SQL Server 2005 SQuirreL - 成功!

我的机器

Windows 7 松鼠 3.5.0 Tomcat 6.0.18 Java 1.6.0_29 连接字符串:jdbc:sqlserver://..com:1433 SQL Server Management Studio Express 2005

服务器:

Windows Server 2012 R2 SQL Server 2012(2005 兼容性)

旧服务器:

Windows Server 2003 R2 SQL Server 2005

谢谢!

【问题讨论】:

粘贴代码而非硬件配置 尝试使用不同的 JDBC 驱动程序,例如 jtds 这不是代码问题,因为它在另一台开发人员机器上运行良好 jtds 在松鼠上连接良好。但是,我认为我不会被允许在 Tomcat 上迁移到 jtds。 在新的 jdbc 驱动程序上更正了 tomcat 的结果 【参考方案1】:

什么是 SQL 语句?由于您从 Tomcat 收到此错误(com.microsoft.sqlserver.jdbc.SQLServerException:该语句未返回结果集。)SQL 语句是否在 MSSQL 2012 Server Management Studio 中工作。只需尝试类似 (SELECT 1) 之类的简单操作,看看是否可行。

在 Tomcat 上,请提供资源配置。您可以尝试使用 Tomcat 提供的内置连接池。

factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"

由于超时,您可能遇到了网络问题。 ping 是否成功? 你能 telnet 到 1433 看看有没有防火墙阻止你的连接吗?

【讨论】:

是的,我可以 ping 服务器。我将使用配置更新我的帖子。不过,它同样适用于另一台开发人员机器

以上是关于我的计算机无法通过 JDBC 连接到 SQL Server 2012(超时),而其他计算机可以的主要内容,如果未能解决你的问题,请参考以下文章

无法将 JDBC 连接到 SQL 服务器?

无法使用 JDBC 连接到 sql 2008 express

无法使用 jdbc 连接到 MS SQL 数据库

无法使用 JDBC 驱动程序和 sql2o 连接到我的 Posgres 服务器

似乎无法将 JDBC sql 服务器驱动程序连接到 java eclipse 项目

无法通过 jdbc 连接到 hive