当我尝试从我的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上迁移数据库后,我看到了这个错误。
答案 0 :(得分:0)
这可能是由几个原因造成的:
脚本中的错误。连接在某处关闭(可能是因为您无法正常处理的异常),然后您尝试再次使用它。检查异常和资源处理。
您保持连接打开时间过长。超过一定时间后,数据库会关闭它们的连接。
有人重新启动了数据库服务器。
它很可能不是防火墙问题;防火墙只是在连接超时时丢弃数据包,因此应用程序似乎会挂起"挂起"而不是给出一个好的错误信息。