【发布时间】:2015-06-15 13:29:59
【问题描述】:
当我使用 mssql 测试应用程序时,我总是随机收到此错误,并且不知道我可以做些什么来纠正这个问题。
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b):
org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: com.microsoft.sqlserver.jdbc.SQLServerException:
Connection reset ClientConnectionId:a2fb508d-0e8e-48b0-92ed-2d1f262b4db1 Error Code: 0
我的设置包括
- Eclipselink 作为 ORM
- sqljdbc v4.1
- sql server 2014
- Java 8
我相信问题可能是 sql-server 中的一个设置,尽管我没有看到任何可以纠正的东西。该应用程序在 postgres 和 mysql 上运行完美,但客户只想使用 mssql。
【问题讨论】:
-
背景是什么?您是否运行任何 sql 更新/选择?有什么手续吗?您可以在 ssms 中手动运行它们而不会出现任何错误吗?他们跑了多长时间?也许您已将超时设置为低?
-
@Ionic 是的,有一些守护程序应用程序会不断访问数据库以检查不同的条件。主要是他们以大约 20:1 的比例进行小更新的选择,没有删除和插入。这些守护进程应该一直在运行。文档中的默认超时 [eclipse.org/eclipselink/documentation/2.4/jpa/extensions/… 为 0,因此它们不会超时。
-
我有时也有同样的经历。服务器本身的超时值为 0,这意味着它不会超时。但是我的 c# 应用程序有它自己的超时终止。您可能需要查看 sys.dm_tran_locks 以检查应用程序运行时是否存在锁。也许这有帮助。这里是一个例子:SELECT * FROM sys.dm_tran_locks WHERE resource_database_id = DB_ID() and request_session_id = [YOURSESSION]
-
@Ionic 这个锁应该在哪里启动。查询不会产生任何结果。
-
嗯,我不知道它是否会产生任何东西。因为我不知道您运行的是哪个查询。 :-)
标签: java sql-server eclipselink mssql-jdbc