这是我的第一篇帖子,所以要温柔!:)
我已经设置了一个grails项目(相当粗糙的grails项目)并尝试将其连接到SQL 2008数据库,我已将jtds-1.3.0.jar添加到lib文件夹和我的构建路径中,然后我将我的DataSource.groovy文件修改为如下: -
dataSource {
pooled = true
driverClassName = "net.sourceforge.jtds.jdbc.Driver"
dialect = "org.hibernate.dialect.SQLServerDialect"
}
hibernate {
cache.use_second_level_cache = true
cache.use_query_cache = false
cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory'
}
// environment specific settings
development {
dataSource {
dbCreate = "update"
url= "jdbc:jtds:sqlserver://TestServer:1433;databaseName=TestTable"
username = "test"
password = "test"
// logSql=true
}
}
Run Code Online (Sandbox Code Playgroud)
麻烦的是,当我尝试编译时,我得到一个大的错误,如下所示,我错过了什么?我用google搜索但找不到明显的解决方案......:S
| Error 2013-03-08 12:44:33,451 [localhost-startStop-1] ERROR context.GrailsContextLoader - Error executing bootstraps: Error creating bean with name 'transactionManagerPostProcessor': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean …Run Code Online (Sandbox Code Playgroud) 目前我们使用jtds连接到我们的SQL Server数据库.由于性能和可靠性的原因,我一直认为我们使用它是理所当然的,然而,它的用法在我的工作之前使用.
所有这一切,我们现在正在尝试迁移到SQL Server 2008,其中jtds的支持有限.初步测试似乎表明,jtds在2005年的性能优于微软提供的驱动程序.
所以我的问题是,是否有人有任何经验证据或任何其他好的信息,否则说明哪个jdbc驱动程序最适合与SQL Server 2005和\或2008一起使用?
jtds更好吗?微软提供的驱动程序?别的什么?
我已经考虑过剖析,但怀疑这是否真的可以证明什么.
我试图从一个SQL Server 2005数据库服务器获取中文字符,我的Web应用程序在Linux机箱(RHEL)上托管了Jboss服务器.问题是中文字符永远不会从数据库中返回,而是显示一些方框.我已尝试过两种JTDS驱动程序以及Microsoft的SqlJdbc驱动程序.有趣的是,数据库和驱动程序的相同组合在Windows环境中工作正常,中文字符从结果集中返回一个字符串.
任何有关该问题的帮助将不胜感激.
从我的所有应用程序使用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的OSS应用程序SqlHawk,它的一个功能是对服务器运行升级sql脚本.
微软已经将使用GO语句将脚本分成批处理的惯例,这是一个好主意,但只是要求字符串上的错误匹配.
目前我有一个非常简陋的:
// split where GO on its own on a line
Pattern batchSplitter = Pattern.compile("^GO", Pattern.MULTILINE);
...
String[] splitSql = batchSplitter.split(definition);
...
Run Code Online (Sandbox Code Playgroud)
哪种工作,但很容易被引用的GO语句或缩进问题绊倒.
我认为让这个真正可靠的唯一方法是在应用程序中有一个SQL解析器,但我不知道如何解决这个问题,或者这实际上是否真的不太可靠(特别是考虑到这个工具支持多个DBMS) .
我有什么方法可以解决这个问题?代码示例对我来说非常有帮助.
github上的相关sqlHawk代码.
目前使用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) 我正在尝试使用jTDS连接器jtds-1.3.1.jar从Sql Develper 4.0.3.16连接到Sql Server 2012.
操作系统:Ubuntu 14.04
Java的:
~$ java -version
java version "1.7.0_72"
Java(TM) SE Runtime Environment (build 1.7.0_72-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.72-b04, mixed mode)
Run Code Online (Sandbox Code Playgroud)
在创建连接窗口中,当我测试连接时,它是成功的.
当我打开连接时,我可以看到所有数据库.当我尝试打开一个我应该有权打开的数据库时,我收到以下错误窗口:

有任何想法吗?
PS如果微软有一个JDBC驱动程序 sqljdbc4-4.0.jar(当我从Java代码连接到Sql Server 2012时它适用于我),为什么我必须使用jTDS才能将Sql开发人员连接到Sql Server?当我尝试将它用作连接器时,似乎Sql Developer不接受Microsoft jdbc驱动程序.
点击之前 +

点击后 +

我一直在谷歌搜索JTDS(1.3.1)的配置,以便与HikariCP(2.4.3),Spring(4.1.2)和MS SQL Server(2008)一起使用,但无法找到完整且有效的示例.
这是我有的:
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
<constructor-arg ref="hikariConfig" />
</bean>
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
<property name="poolName" value="springHikariCP" />
<property name="connectionTestQuery" value="SELECT 1" />
<property name="dataSourceClassName" value="${jdbc.dataSourceClassName}" />
<property name="maximumPoolSize" value="${jdbc.maximumPoolSize}" />
<property name="minimumIdle" value="${jdbc.minimumIdle}" />
<property name="idleTimeout" value="${jdbc.idleTimeout}" />
....
<property name="dataSourceProperties">
<props>
....
</props>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
那里的任何人都可以共享生产环境中使用的JTDS配置吗?
问候.
UPDATE
我找到了这个帖子:
似乎JTDS在使用HikariCP时遇到了问题.实际上,我也有这个问题.这是我对JTDS的完整配置:
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
<constructor-arg ref="hikariConfig" />
</bean>
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
<property name="poolName" value="springHikariCP" />
<property name="connectionTestQuery" value="${jdbc.connectionTestQuery}" />
<property name="dataSourceClassName" value="${jdbc.dataSourceClassName}" />
<property name="maximumPoolSize" value="${jdbc.maximumPoolSize}" …Run Code Online (Sandbox Code Playgroud) jTDS 当前不支持datetimeoffsetSQL Server 2008 中引入的数据类型。
任何人都可以建议是否有办法将datetimeoffset类型与 jTDS一起使用?