问题标签 [jtds]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
405 浏览

sql-server-2008 - 带有 SQL Server 2008 R2 的 jtds -“套接字写入错误”

我们将旧安装移至新的托管合作伙伴,现在我们在从 apache(6.0.20)到 SQL Server 2008 R2(运行在另一台主机上)。我们正在使用当前的 jTDS (1.2.5) jdbc 驱动程序。搬家之前没有出现这些问题。

一位 MS SQL Server 专家表示,这些问题可能与我们在 MS Server 2008 R2 上运行 jTDS 有关。

问:任何人都可以支持(或反驳)我们的问题与我们使用 jTDS 相关的理论(并且我们最好使用 MS JDBC 驱动程序)?

0 投票
1 回答
2053 浏览

java - ResultSet 对象已关闭 - jtds

我正在使用 JTDS 连接到 MS-SQL 2005。我使用 c3p0 作为数据库连接池,配置了 Spring。

我随机得到一个 SQLException:Invalid state, the ResultSet object is closed在一个 Groovy 脚本中,我在其中传递了对连接池的引用。该脚本由计时器每隔一段时间执行一次。随机,我的意思是脚本在 99% 的情况下都能完美运行,但是当它失败时,它会这样做几次,然后再次恢复正常工作,从中断的地方开始。所有关键工作都在事务中完成,从消息队列中拉出。

下面的逻辑:

有一个单独的计时器线程运行类似的 groovy 脚本,我们在其中没有看到这个问题。该脚本使用类似的调用来获取连接并关闭它。

最初,我们认为第二个脚本可能已经从池中获取相同的连接,先完成,然后关闭连接。但是 c3p0 的文档说调用conn.close()应该简单地将它返回到池中。

有没有其他人看到这个,或者我在这里错过了什么大事?

谢谢。

0 投票
2 回答
2056 浏览

java - JTDS (Java/MSSQL) - 找不到存储过程

我正在使用 JTDS 和 Java 连接到 Microsoft SQL 数据库。我能够完美地连接到数据库。但是,当我运行下面的代码时,我收到一个错误“找不到存储过程'get_queue_items'”。我试过在“dbo”前面加上前缀。到存储过程名称,但是我继续收到错误。我还包括了实际的存储过程以供参考。

和存储过程:

我是 JTDS 和 Java 的新手,所以我很可能有错,但我们将不胜感激。

编辑:根据 Cristian 的建议更改了存储过程,仍然收到相同的错误“找不到存储过程 'get_queue_items'

编辑 2:仍然无法正常工作 - 数据库连接似乎也很好。

0 投票
2 回答
8939 浏览

java - Glassfish、jTDS 和 SQL Server 2008 意外关闭数据库连接

我有一个在 Glassfish 上运行并通过 jTDS 连接到 MSSQL Server 2008 的 Java EE 应用程序。由于某些未知原因,数据库连接在请求期间意外关闭。该应用程序很大,但这里是错误发生方式的摘要:

asadmin create-jdbc-connection-pool在 Glassfish 设置期间,使用和创建连接池asadmin create-jdbc-resource。数据源类是net.sourceforge.jtds.jdbcx.JtdsDataSource.

当 Glassfish 启动时,它调用我们的 ServletContextListener.contextInitialized() 实现,我们从 JNDI 获取数据源。数据源存储在静态变量中。

有一段时间,一切都很顺利。所有请求都被处理并且没有连接被关闭。我们的应用程序使用 Timer 和 MDB(消息驱动 Bean)EJB 执行处理。

这是一个示例onMessage()实现:

最终,我们开始得到以下异常(在一小时内发生大约 100 次):

异常发生在随机 JDBC 调用中。有时是在 ResultSet 迭代期间,有时是在查询执行期间。

在极少数情况下(一个小时内 7 次),我们会收到以下异常:

同样在极少数情况下(一个小时内 5 次),我们会遇到以下异常:

在极少数情况下,我们会遇到这个可怕的异常(jTDS 中的 NPE):

我们无法找到为什么会发生这种情况。在请求期间,使用的连接永远不会空闲超过一秒。我们不知道是谁在断开连接。可能是网络不稳定,但我猜 jTDS 应该只产生与网络相关的异常,对吧?

另一种选择是 Glassfish 连接池的一些策略或配置(可能 Glassfish 过早关闭物理连接),但我们如何跟踪它呢?

最后,MS SQL Server 2008 可以远程断开连接,但是我们如何监控服务器端以了解它是否正在发生呢?

0 投票
1 回答
2655 浏览

sql-server-2005 - 使用 Spring JDBC 模板的 MS SQL Server 命名实例连接

全部,

我正在尝试使用 Microsoft JDBC Driver 和 jTds 连接 SQL Server 命名实例。

两者都给出了不同的问题。

微软驱动问题:

连接网址:

实例 SQL2005 失败。错误:java.net.SocketTimeoutException: Receive timed out。验证服务器和实例名称,检查是否没有防火墙阻止到端口 1434 的 UDP 流量,对于 SQL Server 2005 或更高版本,验证 SQL Server Browser 服务是否正在主机上运行。

jTDS:

连接网址:

请给我一个很好的解决方案来使用 spring 连接 MS SQL SERVER NAMED INSTANCES。

提前致谢

0 投票
1 回答
1942 浏览

java - 数据库重新启动后将 jdbc 数据源重新连接到 sybase ASE 12.5

我有一个使用jtds驱动程序并commons-dbcp作为连接池的 java 应用程序。此应用程序连接到Sybase ASE 12.5. 不时sybase重新启动以进行维护。重新启动后,我的应用程序尝试重新连接到sybase,但它似乎一直失败,但出现以下异常:

这是spring数据源的配置:

如果我尝试通过禁用然后启用网络接口来模拟网络故障,一切都会按预期工作,并且我的应用程序会成功重新连接。

我也尝试过jconnect sybase驱动程序,但没有成功。

我知道我可以通过指定完全限定的对象名称来解决此问题,但在这种情况下,我将对源代码进行大量编辑,因此我正在寻找更简单的解决方案。

有没有人遇到过这样的问题?

0 投票
1 回答
1036 浏览

java - 使用 Hibernate Criteria API 性能不佳

我有一个使用 Hibernate 与 MsSQL 2005 服务器通信的 Java 应用程序,驱动程序是net.sourceforge.jtds 1.2.4.

一切正常,但性能很糟糕,我怀疑索引没有用于传递给它的查询,因为响应时间与表中的条目数成正比。


我编写了一个使用相同驱动程序(jtds)但不使用 Hibernate 的小型测试应用程序,并且我能够重现糟糕的性能(或者我相信)。当我使用准备好的语句时,我发现与使用 Hibernate 的性能相同(响应时间约为 1 秒),但当我不使用时,性能却很好(约 10 毫秒)。

我可以使用Hibernate executeSql方法而不是Criteria接口来获得同样好的性能,但我想避免这种情况,因为我希望代码保持模块化并且结果不会转换为我的实体类。

有什么方法可以让 Hibernate 获得良好的性能,同时仍然使用与后端无关的方式进行查询并将结果转换为实体类对象?

0 投票
1 回答
1537 浏览

sql - jTDS JDBC在它应该抛出异常的时候没有抛出异常

我对使用 jTDS JDBC 驱动程序的以下代码有疑问。一切正常,查询也没问题。但如果连接失败,我不会收到错误/异常。我曾尝试输入错误的 IP、禁用本地网络连接、提供错误的端口号等,但没有运气。我真的需要知道连接何时失败。

似乎一切都停在了这一行:“con = java.sql.DriverManager.getConnection(url, id, pass);” (但只有当它真的应该抛出异常时......)

0 投票
1 回答
4113 浏览

java - JTDS驱动程序过时了吗?

我现在正试图决定使用哪个驱动程序来创建从我的 JavaEE 应用程序到 MS SqlServer 的数据源。

几年前,我对JTDS有很好的经验,所以答案表明当时 JTDS 是一种偏好。

但是现在我可以看到它的最新版本 1.2.5 已经有两年了(2009-12-30)。

选择 MS 专有驱动程序是否足够充分,还是 JTDS 如此出色以至于不再需要任何开发?:)

0 投票
0 回答
2525 浏览

sql - SQL Server, JTDS 导致 java.sql.SQLException: Invalid state, the ResultSet object is closed

我正在使用 Tomcat 7、Microsoft SQL Server 2008 RC2 和 JTDS 驱动程序

我实际上也在使用 C3P0 来尝试解决这个问题,但它根本没有区别。我使用的是 Microsoft 的驱动程序,但它给我带来了其他问题(仅转发结果集不支持请求的操作)

我收到以下错误,总是在同一点。在到达这一点之前,我已经成功运行了其他查询:

java.sql.SQLException:无效状态,ResultSet 对象已关闭。在 net.sourceforge.jtds.jdbc.JtdsResultSet.checkOpen(JtdsResultSet.java:287) 在 net.sourceforge.jtds.jdbc.JtdsResultSet.findColumn(JtdsResultSet.java:943) 在 net.sourceforge.jtds.jdbc.JtdsResultSet.getInt (JtdsResultSet.java:968) 在 com.mchange.v2.c3p0.impl.NewProxyResultSet.getInt(NewProxyResultSet.java:2573) 在 com.tt.web.WebPosition.createPosition(WebPosition.java:863)

代码如下:

代码在上述两行之间失败。

我无法解释为什么结果集会在函数中间关闭(即它会检索 rs.getString("SYSDATE_4_EXCEL") 但随后会因 rs.getInt("EXERCISE_STYLE_CD" ))

有没有人有任何想法?我想这是某种内存问题,并且在一定数量的数据后连接会自动关闭,但我不知道如何解决这个问题。我尝试增加 JVM 的堆大小。