0

这是著名的SQLServerException错误消息:

错误:“地址已在使用中:连接。验证连接属性,检查 SQL Server 实例是否正在主机上运行并在端口接受 TCP/IP 连接,并且没有防火墙阻止与端口的 TCP 连接。” .

但是,它并没有在第一次通话中发生。所有的 DAO 方法,使用一种独特的方法来获取连接,并且它们都在完成数据库后关闭连接。

当超过这些调用次数时,该方法将无法再获取连接并 throw SQLServerException

服务器配置中有一些东西不是数据库。因为,我用不同的数据库尝试了相同的场景,并且发生了相同的错误。但是,当我更改服务器(Web 服务器)时,我没有收到错误消息。

此消息有数十种解决方案,但都与防火墙或数据库连接有关。我的问题是为什么有时有效,有时无效?

这是获取连接的方法体:

Connection connection = null;
try {
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

connection = DriverManager.getConnection(DB_CONNECTION_STRING, USERNAME, PASSWORD);
} catch (ClassNotFoundException e) {
    DbmgrLogger.logger.error("fail creating the sql connection", e);
} catch (SQLException e) {
    DbmgrLogger.logger.error("fail creating the sql connection", e);
}
return connection;

更新: 这是堆栈:

at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:171)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1033)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:817)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:700)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:842)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
4

1 回答 1

0

该错误意味着您尝试使用的端口已被其他东西使用(很可能是未关闭资源的同一应用程序?)

Adding comment as answer for closing purposes.

于 2013-10-01T20:55:14.857 回答