JAVA / MSSQL:com.microsoft.sqlserver.jdbc.SQLServerException:连接已关闭

时间:2015-08-20 07:37:24

标签: sql-server jdbc groovy

当我尝试从我的groovy脚本运行它时,我遇到了数据库查询的问题。有时,但很多时候,我有一个错误:

com.microsoft.sqlserver.jdbc.SQLServerException: The connection is closed.
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:190)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.checkClosed(SQLServerConnection.java:388)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.createStatement(SQLServerConnection.java:2156)

我用于连接数据库的模块是:

import com.microsoft.sqlserver.jdbc.*;
def dbUser = "username"
def dbPassword = 'password'
def dbDriver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"
def dbUrl = "jdbc:sqlserver://mssql-server"
def sql = Sql.newInstance(dbUrl, dbUser, dbPassword, dbDriver)

该脚本每2分钟由Windows Server 2012上的Windows调度程序启动。我使用开发人员机器,我正在制作代码并运行此大小的脚本。当我使用MySQL数据库时没有问题,但是在MSSQL上迁移数据库后,我看到了这个错误。

1 个答案:

答案 0 :(得分:0)

这可能是由几个原因造成的:

  1. 脚本中的错误。连接在某处关闭(可能是因为您无法正常处理的异常),然后您尝试再次使用它。检查异常和资源处理。

  2. 您保持连接打开时间过长。超过一定时间后,数据库会关闭它们的连接。

  3. 有人重新启动了数据库服务器。

  4. 它很可能不是防火墙问题;防火墙只是在连接超时时丢弃数据包,因此应用程序似乎会挂起"挂起"而不是给出一个好的错误信息。