标签: jtds

让JTDS驱动程序接受sendStringParametersAsUnicode = false的问题?

从我的所有应用程序使用net.sourceforge.jtds.jdbc.Driver作为我的MSSQL驱动程序.我在准备好的语句中遇到了性能问题,并了解到sendStringParametersAsUnicode = false应该可以解决问题.不幸的是,我似乎无法让司机接受这个价值.我可以得到Microsoft驱动程序com.microsoft.sqlserver.jdbc.SQLServerDriver接受参数就好了:

jdbc:sqlserver://servername:1433;databaseName=dbname;sendStringParametersAsUnicode=false
Run Code Online (Sandbox Code Playgroud)

在persistence.xml和我的ds.xml中工作.准备好的陈述很快就会在22秒内完成.

但是,我似乎无法从JTDS获得相同的性能提升.它仍然围绕着准备好的语句,每次迭代需要几秒钟.

我在字符串上尝试了几种变体,并且在我的测试中看到了相同的延迟(使用Hibernate.connection.url的persistence.xml)和使用JTA和ds.xml的服务器.

jdbc:jtds:sqlserver://server:1433/dbname;sendStringParametersAsUnicode=false

jdbc:jtds:sqlserver://server:1433;sendStringParametersAsUnicode=false;databaseName=dbname

jdbc:jtds:sqlserver://server:1433;sendStringParametersAsUnicode=false;selectMethod=cursor;socketKeepAlive=true;databaseName=dbname
Run Code Online (Sandbox Code Playgroud)

我读过的所有内容都表明Microsoft驱动程序速度较慢,而且我的公司过去也遇到过问题.如果可能的话,我真的很想使用JTDS,但是不能等待准备好的声明10秒!

有人有什么想法吗?

谢谢

java sql-server hibernate jtds sqljdbc

6
推荐指数
1
解决办法
7483
查看次数

使用Play和Slick连接到MSSQL(jtds)

我有一个项目已经完成了大约一个月,我使用Play 2.1.1,光滑和MySQL.现在我需要将其转移到MSSQL,我遇到了一些问题.

我的应用程序编译得很好,并找到驱动程序,但每当我尝试建立连接时,我[RuntimeException: java.lang.ExceptionInInitializerError]在网站上得到一个,我的控制台中的更详细的错误是:

play.api.Application$$anon$1: Execution exception[[RuntimeException: java.lang.ExceptionInInitializerError]]
    at play.api.Application$class.handleError(Application.scala:289) ~[play_2.10.jar:2.1.1]
    at play.api.DefaultApplication.handleError(Application.scala:383) ~[play_2.10.jar:2.1.1]
    at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$17$$anonfun$apply$24.apply(PlayDefaultUpstreamHandler.scala:326) ~[play_2.10.jar:2.1.1]
    at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$17$$anonfun$apply$24.apply(PlayDefaultUpstreamHandler.scala:324) ~[play_2.10.jar:2.1.1]
    at play.api.libs.concurrent.PlayPromise$$anonfun$extend1$1.apply(Promise.scala:113) ~[play_2.10.jar:2.1.1]
    at play.api.libs.concurrent.PlayPromise$$anonfun$extend1$1.apply(Promise.scala:113) ~[play_2.10.jar:2.1.1]java.lang.RuntimeException: java.lang.ExceptionInInitializerError
    at play.api.mvc.ActionBuilder$$anon$1.apply(Action.scala:222) ~[play_2.10.jar:2.1.1]
    at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$2$$anonfun$apply$5$$anonfun$apply$6.apply(Action.scala:109) ~[play_2.10.jar:2.1.1]
    at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$2$$anonfun$apply$5$$anonfun$apply$6.apply(Action.scala:109) ~[play_2.10.jar:2.1.1]
    at play.utils.Threads$.withContextClassLoader(Threads.scala:18) ~[play_2.10.jar:2.1.1]
    at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$2$$anonfun$apply$5.apply(Action.scala:108) ~[play_2.10.jar:2.1.1]
    at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$2$$anonfun$apply$5.apply(Action.scala:106) ~[play_2.10.jar:2.1.1]Caused by: java.lang.ExceptionInInitializerError: null
    at controllers.Application$$anonfun$addLicense$1.apply(Application.scala:18) ~[na:na]
    at controllers.Application$$anonfun$addLicense$1.apply(Application.scala:17) ~[na:na]
    at play.api.mvc.ActionBuilder$$anon$1.apply(Action.scala:217) ~[play_2.10.jar:2.1.1]
    at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$2$$anonfun$apply$5$$anonfun$apply$6.apply(Action.scala:109) ~[play_2.10.jar:2.1.1]
    at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$2$$anonfun$apply$5$$anonfun$apply$6.apply(Action.scala:109) ~[play_2.10.jar:2.1.1]
    at play.utils.Threads$.withContextClassLoader(Threads.scala:18) ~[play_2.10.jar:2.1.1]
Caused by: play.api.Configuration$$anon$1: Configuration error[Slick error : Unknown jdbc driver found in …
Run Code Online (Sandbox Code Playgroud)

sql-server scala jtds playframework slick

6
推荐指数
1
解决办法
2529
查看次数

使用 Hibernate 的 SQLExpress 数据库的连接 URl

我正在使用jtds驱动程序使用 Hibernate 在本地连接到 SQL Server

我可以使用服务器名称连接到服务器:COMP6\SQLEXPRESS

下面是我在 hibernate.cfg 中的连接属性

<property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
    <property name="hibernate.connection.driver_class">net.sourceforge.jtds.jdbc.Driver</property>

    <property name="hibernate.connection.url">jdbc:jtds:sqlserver://COMP6\\SQLEXPRESS/ipms_m1_new_final_1apr</property>

    <property name="hibernate.connection.username">sa</property>
    <property name="hibernate.connection.password">xxxx</property>
Run Code Online (Sandbox Code Playgroud)

整个堆栈跟踪

java.sql.SQLException: Unknown server host name 'COMP6\\SQLEXPRESS'.
at net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2.java:401)
at net.sourceforge.jtds.jdbc.ConnectionJDBC3.<init>(ConnectionJDBC3.java:50)
at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:184)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:154)
at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:110)
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:84)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2009)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1292)
at com.nextenders.facadeimplementation.hibernate.util.HibernateFactory.configureSessionFactory(HibernateFactory.java:103)
at com.nextenders.facadeimplementation.hibernate.util.HibernateFactory.buildIfNeeded(HibernateFactory.java:40)
at com.nextenders.facadeimplementation.model.dao.AbstractDao.<init>(AbstractDao.java:19)
at com.nextenders.facadeimplementation.model.dao.domain.common.ConfigurationDao.<init>(ConfigurationDao.java:28)
at com.nextenders.facadeimplementation.facade.domain.common.ConfigurationFacade.getConfigurationList(ConfigurationFacade.java:83)
at com.nextenders.server.businessdelegates.domain.common.ConfigurationBusinessDelegate.getConfigurationList(ConfigurationBusinessDelegate.java:45)
at com.nextenders.server.actions.common.ContextListener.contextInitialized(ContextListener.java:60)
at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:543)
at org.mortbay.jetty.servlet.Context.startContext(Context.java:136)
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1220)
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:513)
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:448)
at com.google.gwt.dev.shell.jetty.JettyLauncher$WebAppContextWithReload.doStart(JettyLauncher.java:447)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
at org.mortbay.jetty.handler.RequestLogHandler.doStart(RequestLogHandler.java:115)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39) …
Run Code Online (Sandbox Code Playgroud)

hibernate jtds sql-server-express

5
推荐指数
1
解决办法
1万
查看次数

SQL Server“超出锁定请求超时期限”..再次

我在尝试延长 sql server SP 中的锁定超时时遇到问题。无论我尝试什么,它都会抛出“超出锁定请求超时期限”。我正在使用 java + jtds 1.2.2、c3p0 0.9.1 和 sql server 2008。我尝试的设置:

SET LOCK_TIMEOUT 10000 inside the SP and with con.createStatement().execute("SET LOCK_TIMEOUT 10000 ")在呼叫 SP 之前。并在 SP 语句中:statement.setQueryTimeout( 10 );

SP 由 : s 调用tatement = con.prepareCall("dbo.store_procedure ?,?,?", ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); ,并在内部设置“SET TRANSACTION ISOLATION LEVEL REPEATABLE READ”

有什么建议吗?有人有类似的问题吗?提前致谢

java sql-server jtds jdbc c3p0

5
推荐指数
1
解决办法
2万
查看次数

带有C3P0连接检查的jTDS套接字(SQL Server 2008 R2)

这是环境:

  • Java 5
  • 在Windows上运行Tomcat 6.0.18的Web应用程序(不确定版本)
  • 数据库:SQL Server 2008 R2
  • JDBC驱动程序:jTDS 1.2.5
  • 连接池提供者:C3P0 0.9.1.2

我正在尝试调试客户端遇到的问题.基本上每隔几周,我们的Web应用程序就锁定在他们的服务器上,他们无法访问它.重启可以解决问题.进一步调查显示,所有内容都被锁定的原因是一切都在等待数据库连接返回.我认为问题可能出在SQL Server上,而不是C3P0上.

我认为正在发生的是C3P0的"空闲检查查询"正在悬挂.查询是这样的:

select * from c3p0_connection_test_table
Run Code Online (Sandbox Code Playgroud)

看起来这个查询运行,结果永远不会返回.这是我在线程转储中看到的内容.注意DefaultConnectionTester.activeCheckConnection(),这是空闲检查:

"com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2" daemon prio=6 tid=0x0000000007c32000 nid=0x1250 runnable [0x000000001072f000]
   java.lang.Thread.State: RUNNABLE
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(SocketInputStream.java:129)
    at java.io.DataInputStream.readFully(DataInputStream.java:178)
    at java.io.DataInputStream.readFully(DataInputStream.java:152)
    at net.sourceforge.jtds.jdbc.SharedSocket.readPacket(SharedSocket.java:841)
    at net.sourceforge.jtds.jdbc.SharedSocket.getNetPacket(SharedSocket.java:722)
    - locked <0x000000016ac03f48> (a java.util.ArrayList)
    at net.sourceforge.jtds.jdbc.ResponseStream.getPacket(ResponseStream.java:466)
    at net.sourceforge.jtds.jdbc.ResponseStream.read(ResponseStream.java:103)
    at net.sourceforge.jtds.jdbc.ResponseStream.peek(ResponseStream.java:88)
    at net.sourceforge.jtds.jdbc.TdsCore.wait(TdsCore.java:3928)
    at net.sourceforge.jtds.jdbc.TdsCore.executeSQL(TdsCore.java:1045)
    - locked <0x000000016d965268> (a net.sourceforge.jtds.jdbc.TdsCore)
    at net.sourceforge.jtds.jdbc.JtdsStatement.executeSQLQuery(JtdsStatement.java:465)
    at net.sourceforge.jtds.jdbc.JtdsStatement.executeQuery(JtdsStatement.java:1301)
    at com.mchange.v2.c3p0.impl.DefaultConnectionTester.activeCheckConnection(DefaultConnectionTester.java:73)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.testPooledConnection(C3P0PooledConnectionPool.java:374)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.refurbishIdleResource(C3P0PooledConnectionPool.java:310)
    at com.mchange.v2.resourcepool.BasicResourcePool$AsyncTestIdleResourceTask.run(BasicResourcePool.java:1999)
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
Run Code Online (Sandbox Code Playgroud)

但是什么可能导致这样一个简单的查询挂起来从套接字读取?我不相信这个表上会有任何数据库锁定,因为它完全由C3P0管理,从不插入/更新.此外,任何失败的尝试从池中获取连接(如果这是挂起的原因),我会期望在某处的堆栈跟踪.相反,我看到的是应用程序只是锁定,因为所有未来的连接请求都在等待这个"空闲检查"完成. …

sql-server jtds jdbc c3p0 python-idle

5
推荐指数
1
解决办法
6633
查看次数

Glassfish,jTDS和SQL Server 2008意外关闭了数据库连接

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

在Glassfish的设置,与创建一个连接池asadmin create-jdbc-connection-poolasadmin create-jdbc-resource.数据源类是net.sourceforge.jtds.jdbcx.JtdsDataSource.

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

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

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

public void onMessage(Message message) {
  this.message = message;
  this.connection = dataSource.getConnection(userName, password);
  try {
    doQuery1();
    doTransaction1();
    doTransaction2();
    doQuery2();
    doQuery3();
  } finally {
    this.connection.close();
    this.connection = null;
  }
}
Run Code Online (Sandbox Code Playgroud)

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

java.sql.SQLException: Invalid state, the Connection object is closed.
  at net.sourceforge.jtds.jdbc.ConnectionJDBC2.checkOpen(ConnectionJDBC2.java)
  at net.sourceforge.jtds.jdbc.ConnectionJDBC2.prepareStatement(ConnectionJDBC2.java)
  at net.sourceforge.jtds.jdbc.ConnectionJDBC2.prepareStatement(ConnectionJDBC2.java)
  at com.sun.gjc.spi.base.ConnectionHolder.prepareStatement(ConnectionHolder.java:475)
  at com.acme.myejbs.MyMDB.doQuery2(MyMDB.java:123)
  at com.acme.myejbs.MyMDB.onMessage(MyMDB.java:614)
  at sun.reflect.GeneratedMethodAccessor115.invoke(Unknown Source)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java)
  at java.lang.reflect.Method.invoke(Method.java)
  at com.sun.enterprise.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1011)
  ...
  at $Proxy92.onMessage(Unknown Source) …
Run Code Online (Sandbox Code Playgroud)

java sql-server jtds jdbc glassfish

5
推荐指数
1
解决办法
8343
查看次数

连接到本地MS SQL Server

我有一个本地MS SQL Server,我试图在java中使用JTDS连接到它.这是连接字符串:

Class.forName("net.sourceforge.jtds.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:jtds:sqlserver://localhost:1433/stock","sa","password");
Run Code Online (Sandbox Code Playgroud)

和服务器属性:
名称:USER-PC\SQLEXPRESS
根目录:C:\ Program Files文件\ Microsoft SQL Server的\ MSSQL11.SQLEXPRESS\MSSQL

我收到了一个Exception in thread "main" java.sql.SQLException: Network error IOException: Connection refused: connect错误.

我该如何解决这个问题?

java sql-server jtds

5
推荐指数
1
解决办法
2万
查看次数

无法加载JDBC驱动程序类'net.sourceforge.jtds.jdbc.Driver'

我有一些jtds的问题.

我在Linux Red Hat Server上使用Hibernate,Tomcat 5.5,在WIndows Server上使用SQL Server 2005

我将库保存到Web-iNF/lib中,我使用的是jtds-1.2.2版本

我收到了错误消息

16:56:17,561错误JDBCExceptionReporter:78 - 无法加载JDBC驱动程序类'net.sourceforge.jtds.jdbc.Driver'

有人可以解释我做错了吗?

这里是连接定义.

<Resource name="pr/jdbc/dsConn" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="example" password="test1234" driverClassName="net.sourceforge.jtds.jdbc.Driver" url="jdbc:jtds:sqlserver://localhost:1433/example" /> 
Run Code Online (Sandbox Code Playgroud)

有人可以帮我解决这个问题吗?

最好的祝福

java hibernate sql-server-2005 jtds

5
推荐指数
0
解决办法
9204
查看次数

ClassNotFoundException的:net.sourceforge.jtds.jdbc.Driver

我有java代码连接到MS-SQL数据库并获取一些数据.

在运行代码之前,我在Unix服务器中设置了类路径,以前它工作正常.

但由于某些原因,这是工作几天就回来同一个jar文件抛出类未发现异常抛出java.lang.ClassNotFoundException:net.sourceforge.jtds.jdbc.Driver

我没有jar jar文件,发现我正在加载的驱动程序类:

Class.forName("net.sourceforge.jtds.jdbc.Driver");
Run Code Online (Sandbox Code Playgroud)

存在于指定的包结构中.

我不明白这是怎么回事.

任何人都可以提出解决此问题的建议.

java jtds jdbc

5
推荐指数
1
解决办法
3万
查看次数

jtds忽略setFetchSize.如何限制获取大小?

我试图限制我的选择查询的提取大小.不幸的是,JTDS MS SQL驱动程序仍然读取所有行.

我不想要限制或偏移选择.我只是想节省我的记忆,以便我需要更少的内存.我不需要setMaxRows.

我的示例代码:

url="jdbc:jtds:sqlserver://myserver:1433;DatabaseName=myDb";
mySql="select * from myVeryLargeTable";
con.setAutoCommit(false);
batchSize=1000;
s =con.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);
s.setFetchSize(batchSize);
rs = s.executeQuery(mySql);
rs.setFetchSize(batchSize);
rs.next(); // here all rows are coming in over network but i only want 'batchSize'
Run Code Online (Sandbox Code Playgroud)

如何限制获取大小?

java sql-server jtds jdbc

5
推荐指数
1
解决办法
952
查看次数