加载时SQLServerException

时间:2013-10-01 17:27:34

标签: java sql-server jdbc connection sqlexception

以下是着名的SQLServerException错误消息:

  

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

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

当这些调用次数超过时,该方法无法再获取连接并抛出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)

1 个答案:

答案 0 :(得分:0)

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

Adding comment as answer for closing purposes.