问题标签 [sqljdbc]
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.
hibernate - mssql-jdbc MS SQL Server JDBC 驱动程序准备好的语句缓存性能问题与 Hikari CP
我们一直在将我们的服务器从使用 Hibernate 4.2 转换为 Hibernate 5.2。
Hibernate 5.2 需要 JDBC 4.2 (Java 8),这需要我们切换到 Hikari CP 连接池,它是我们之前使用的(现已弃用)Bone CP 的一个分支,因为 Bone CP 仅支持 JDBC 4.1 (Java 7) .
与 Bone CP 不同,Hikari CP 不再在连接池中提供准备好的语句缓存,因此现在需要在 JDBC 驱动程序中完成,这对于 MS SQL Server 意味着我们需要迁移到提供准备好的语句缓存的 JDBC 驱动程序版本驱动程序,mssql-jdbc 6.4.0(2018 年 1 月发布)是第一个使用它的驱动程序。
所以完整的变化是从 Hibernate 4.2 + Bone CP 0.8.0 + sqljdbc42 4.2.6420.100 MS SQL Server JDBC 驱动程序到 Hibernate 5.2 + Hikari CP 2.7.8 + mssql-jdbc 6.4.0.jre8。
不幸的是,由于这种切换,我们看到读取查询性能平均下降了 20-30%——这是不可接受的。
然而,在 Oracle 和 MySQL 与 Hibernate 5.3 + Hikari + 他们的 JDBC 驱动程序的相应结果中,我们实际上看到了大约 5-15% 的性能改进——所以我们有理由确定这不是由于 Hibernate(而且它不能直接成为 Hikari,因为一旦将连接交给我们,那就不存在了)。
因此,我们正在调查从 Bone CP 0.8.0 准备语句缓存到 mssql-jdbc 6.4 准备语句缓存的切换问题。
我们已经确认,如果我们关闭 mssql-jdbc 6.4 驱动程序准备好的语句缓存,性能会再降低 10%,所以它的性能有点好(我们还在调试器中确认它实际上是在缓存东西)。
我们还尝试为它调整所有明显可用的缓存调整参数:statementPoolingCacheSize
、serverPreparedStatementDiscardThreshold
、enablePrepareOnFirstPreparedStatementCall
(以及useCursors
),但效果很小。
- 有没有人对 Hikari CP + mssql-jdbc 6.4 或 Hibernate 5 + Hikari CP + mssql-jdbc 6.4 的组合有任何经验?
- 来自 mssql-jdbc 6.4 的准备好的语句缓存性能差(与 Bone CP 过去提供的相比)是一个已知问题吗?还是 mssql-jdbc 对于读取查询的总体速度比 sqljdbc42 慢?
- 是否还有其他我们遗漏的 mssql-jdbc 调优参数?任何人都可以建议我们可以尝试的其他任何东西——例如,是否有另一个我们可以尝试的 MS SQL Server JDBC 驱动程序?(jDTS 不是一个选项,因为它甚至与 JDBC 4.0 也不兼容)
java - org.springframework.orm.ObjectOptimisticLockingFailureException 与 microsoft 驱动程序而不是 jtds 驱动程序
ObjectOptimisticLockingFailureException
当我使用 microsoft sqlserver 驱动程序 (sqljdbc4.jar) 时,我得到了批量更新。但是,使用相同的代码,当我将驱动程序切换到 Jtds 驱动程序时,我能够成功地进行批量更新和插入。我们在 Hibernate 中使用 sql server 数据库和 JPA。
下面是我正在做的事情。
从数据库中获取数据,status_code 为 SUBMITTED,当前标志为 Y。
批量更新记录到当前标志 N 并批量插入具有新状态 BATCH_LOCKED 的新记录。
- 使用当前标志 N 再次批量更新上述记录,并批量插入状态为 COMPLETED 的新记录。
所有这些更新都顺利进行。提交事务时,我收到以下异常
我没有专门定义乐观锁定,也没有为任何列定义 @Version 注释。默认情况下乐观锁定是如何发生的?
如果我评论第 3 步,则不会出现异常。
为什么我没有得到 JTDS 驱动程序的异常?
org.springframework.orm.ObjectOptimisticLockingFailureException:批量更新从更新[1]返回了意外的行数;实际行数:0;预期:1;嵌套异常是 org.hibernate.StaleStateException:批量更新从更新 [1] 返回了意外的行数;实际行数:0;预期:1
android - java.sql.SQLException:android studio 中的对象名称“tablename”无效
我正在尝试将android studio连接到数据库SQL server 2014
,但出现此错误:
我使用 :jtds 1.3.1
和 :sqljdbc4-2.0
我连接本地网络。
java - 驱动程序无法通过使用安全套接字层在 java 1.8.0_161 上工作但不能在 1.8.0_202 上建立与 SQL Server 的安全连接
我正在尝试在我的 Spring Boot 应用程序中连接到 SQL Server。但是,我在 Java 版本 1.8.0_202 上遇到以下错误。我能够成功地与 Java 1.8.0_161 建立连接。这可能是什么原因?
使用的 Jar - sqljdbc42.jar,也尝试了 sqljdbc4.jar 以及 mysqljdbc7.2.1.jre8.jar。
SQL Server - Microsoft SQL Server 2005 - 9.00.3239.00(英特尔 X86)
连接字符串
jdbc:sqlserver://*ServerIP*:*Serverport*;databaseName=*dbname*;encrypt=false;sslProtocol=TLSv1;user=*user*;password=*******;
堆栈跟踪
谢谢!
java - 我需要什么版本的 sqljdbc?
我遇到了我收到错误的应用程序的问题。
驱动程序无法使用安全套接字层 (SSL) 加密建立与 SQL Server 的安全连接。错误:“SQL Server 返回的响应不完整。”
我看过了,我的新服务器上的唯一区别是 SQL 版本,这让我认为我的 SQLJDBC4.jar 版本错误
我一直在寻找适用于 Java 版本 1.6.0_27 和 MS SQL Sever 2017 的版本
有人对我需要什么版本的 JAR 有任何建议吗?
java - 如何测试 SQL Server 连接属性
我有一个与 SQL Server 数据库交互的 Java 应用程序。我想编写一些单元测试来测试连接属性,如 lockTimeout、queryTimeout、loginTimeout 和 socketTimeout 等。
测试上述场景的最佳方法是什么?一种方法是为每种情况编写代码,准备情况并运行那段代码。这将是一种更多的手动测试。有没有其他方法/库来测试 SQL Server 属性?
java - 从cmd运行jar文件时如何在参数中给出sqljdbc_auth.dll的路径?
有没有办法在运行 jar 时在命令行参数中给出“sqljdbc_auth.dll”的路径?
sql-server - 通过 JDBC 连接将本地 SQL Server 数据库连接到数据块时出错
基本上,我正在尝试使用 JDBC 连接从数据块连接到本地计算机上的 SQL Server 数据库。我正在按照databricks 网站上显示的文档中提到的过程进行操作。
我使用了网站上提到的以下代码:
但我收到了这个错误
IllegalArgumentException:要求失败:驱动程序无法打开 JDBC 连接。查看网址:jdbc:mysql://localhost:3306/TestDB
谁能解释为什么会这样?我该如何解决这个错误?
sql-server - JMeter - SQL Server - 无法创建 PoolableConnectionFactory
JMeter 5.3.0
尝试使用 JDBC 连接配置。
下载的 SQL Server JDBC 库 (sqljdbc8.2.2.0)。
- 将 JAR 文件放入 {jmeter}\lib\
- 将 sqljdbc_auth.dll 放入 {jmeter}\lib\
- 还尝试按照https://performancebasics.wordpress.com/2016/01/25/setting-up-a-jdbc-sql-server-connection-in-jmeter/在 jmeter.bat 中使用库路径的想法
重新启动 JMeter
尝试运行 JDBC 请求。
仍然收到错误:
我还需要检查什么?