Microsoft JDBC Driver for SQL Server 发行说明

本文列出了 Microsoft JDBC Driver for SQL Server 的版本。 对于每个发行版本,将对所做的更改进行命名和说明。

12.8

下载 Microsoft JDBC Driver 12.8.1 for SQL Server (zip)
下载 Microsoft JDBC Driver 12.8.1 for SQL Server (tar.gz)

版本号:12.8.1
发布日期:2024 年 8 月 22 日

如果你需要下载非所检测到的语言的驱动程序,则可使用以下直接链接。
对于 zip 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语
对于 tar.gz 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 韩语 | 葡萄牙语(巴西) | 俄语 | 西班牙语

12.8 合规性

符合性更改 详细信息
下载 JDBC Driver 12.8 的最新更新。 GitHub,12.8.0
Maven Central
完全符合 JDBC API 规范 4.2。 根据 Java 版本兼容性命名 12.8 包中的 jar。

例如,12.8 包中的 mssql-jdbc-12.8.0.jre11.jar 文件应与 Java 11(或更高版本)配合使用。
与 Java 开发工具包 (JDK) 版本 22.0、21.0、17.0、11.0 和 1.8 兼容。 除 JDK 21.0、17.0、11.0 和 1.8 外,Microsoft JDBC Driver 12.8 for SQL Server 现在还与 Java 开发工具包 (JDK) 版本 22.0 兼容。

12.8 版本

版本号:12.8.1
发布日期:2024 年 8 月 22 日

12.8.1 中的更改:

  • 已将 MSAL 日志记录从 FINER 更改为 FINEST

修复了 12.8.1 中的问题:

  • 调整了 SQLServerBulkCopy 中的 DESTINATION_COL_METADATA_LOCK,以便在所有情况下都能正确发布
  • 更改了驱动程序行为,允许重用已准备的语句对象,从而防止出现“不允许多个查询”的错误
  • 还原了“直接执行存储过程”功能,以及与该功能相关的后续更改。

下载 Microsoft JDBC Driver 12.8.1 for SQL Server (zip)
下载 Microsoft JDBC Driver 12.8.1 for SQL Server (tar.gz)

如果你需要下载非所检测到的语言的驱动程序,则可使用以下直接链接。
对于 zip 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语
对于 tar.gz 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 韩语 | 葡萄牙语(巴西) | 俄语 | 西班牙语

版本号:12.8.0
发布日期:2024 年 7 月 31 日

下载 Microsoft JDBC Driver 12.8.0 for SQL Server (zip)
下载 Microsoft JDBC Driver 12.8.0 for SQL Server (tar.gz)

如果你需要下载非所检测到的语言的驱动程序,则可使用以下直接链接。
对于 zip 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语
对于 tar.gz 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 韩语 | 葡萄牙语(巴西) | 俄语 | 西班牙语

12.8 中的新增功能

Feature 详细信息
Java 22 支持 除 JDK 21.0、17.0、11.0 和 1.8 外,该驱动程序现在还与 Java 开发工具包 (JDK) 版本 22.0 兼容。
新增了使用托管标识凭证和默认 Azure 凭证时的凭证缓存 为了改进性能并提高驱动程序可靠性,驱动程序允许缓存先前提到的凭证。
允许使用大容量复制进行批量插入时缓存 SQLServerBulkCopy 对象 替换以前的行为,其中每次调用 executeBatch() 会生成一个新的 SQLServerBulkCopy 对象,现在已改为缓存该对象。
为大容量复制中的目标列元数据新增了连接级别缓存 通过在大容量复制应用场景中为目标列元数据新增连接级别添加缓存来改进性能。 通过将新增的连接字符串属性 cacheBulkCopyMetadata 设置为 true(默认值为 false)来启用此功能。
新增了 SQL Server 消息处理程序以及对 SQLException 链接的支持 新增了 SQL Server 消息处理程序,可以使用多种功能,包括长时间运行查询的其他反馈、通用错误日志记录,以及从 SQLException 到 SQLWarning 的错误消息严重性自动降级。 此外,此功能允许将 SQLException 链接在一起,以便用户查看所有错误消息。 请参阅处理错误
为 CSV 批量插入操作提供 RFC4180 完整支持 对包含换行符的带引号字段的支持缺失,为确保对 RFC4180 提供完整支持,现新增此更改。
允许根据 java.time.OffsetDateTime 值构造 microsoft.sql.DateTimeOffset 实例 使用 Timestamp 中介对已存在于驱动程序中的两种数据类型进行转换。 此新增功能可消除中介,从而改进性能并减少出现与时区相关的错误的可能性。

12.8 中的更改

更改 详细信息
枚举 SQLServerSortOrder 现在为公共版 已将枚举 SQLServerSortOrder 的可见性更改为公共,以便用户在使用此枚举的查询中具有更大的灵活性。
从套接字替代中移除 synchronized 先前的更改中错误地新增了此更改以符合代码检查标准,然而更改的选择方法实际上不需要同步,目前已移除以反映这一事实。
通过设置默认 RMFAIL 修改了先前的 RMERR/RMFAIL 更改 先前的更改将特定案例的值 XAER_RMFAIL 更改为 XAER_RMERR,但涵盖的所有案例中的大多数案例都很快出现相似情况。 解决方法是将默认值更改为 RMFAIL,如果发生与前述案例相反的情况,则更改为 RMERR
更新了依赖项 已更新 azure-identitybouncycastlemsal 的依赖项版本。
修改了对 TDSType.GUID 的支持 允许将 UUID 直接传递到 setObject 方法,以此增强原本新增的对 TDSType.GUID 的支持。
对令牌缓存新增了日志记录 对令牌缓存应用场景新增了其他日志记录,以便在调试应用场景中提供帮助。

12.8 中的修复

修复 详细信息
修复了可调用语句语法中的指定参数名称的回归 修复了 12.6.2 --> 12.6.3 的回归,其中特定格式的 CallableStatements 返回了不正确的值。 GitHub 问题 #2477
修复了对存储过程和函数中括号的分析 修复以下问题:在调用的函数中,可调用语句的结尾有括号(例如,函数() 和函数)时,会导致返回值始终为 0。 此更改是 12.6.2 --> 12.6.3 的回归。 GitHub 问题 #2463
修复了驱动程序未遵循使用默认参数的 CallableStatement 的错误。 修复了 12.5.0 --> 12.6.0 回归的错误,其中可调用语句中的默认参数被忽略。 GitHub 问题 #2446
修复了删除驱动程序不需要的 TokenCredential 类的问题 SQLServerSecurityUtility 中不需要 TokenCredentialClass,其可能会导致错误地引发 NoClassDefFoundError。 此项修复会删除导入操作,并将其替换为泛型 ObjectGitHub 问题 #2439
修复了 CallableStatements 的时间戳字符串转换错误 修复了在设置 String 值时,调用 DateTime 输入/输出参数时发生的转换异常。 GitHub 问题 #2436
修复了 SqlAuthenticationToken 构造函数以接受正确的参数 SQLAuthenticationToken 的构造函数不正确,其接受以秒为单位的输入参数,但实际应接受以毫秒为单位的输入参数。 GitHub 问题 #2424
执行修复,以在重新连接之前清除已准备的语句句柄 这修复了重新连接后 SQLServerPreparedStatement 中会使用错误句柄的问题,现在,重新连接之前会先正确清除 SQLServerPreparedStatement.prepStmtHandleGitHub 问题 #2364
执行修复,以在重置语句池连接时清除已准备的语句缓存 这修复了在启用语句池的情况下,从 ConnectionPool 重用连接会导致缺少条目或错误插入条目的问题。 GitHub 问题 #2356
执行修复,以从 loginTimeout 中取消绑定 socketTimeout socketTimeout 应具有连接建立上限 loginTimeout,但在驱动程序连接后不应具有上限。 此项更改修复了该行为。 GitHub 问题 #2354
执行修复,以正确检查在尝试递增之前 TDSCommand 计数器是否为 null TDSCommand 计数器新增了缺失的 null 检查,从而防止在不进行检查时出现 NullPointerExceptionGitHub 问题 #2353
通过四部分语法修复使用输出参数的调用过程 修复了使用四部分语法(即链接服务器)调用存储过程会导致错误,指出 TDS 协议流无效的问题。 GitHub 问题 #2344
执行修复,以便正确地转义 getProceduresgetProcedureColumnsschema 参数 SQLServerDatabaseMetadata 方法 getProceduresgetProcedureColumns 未正确转义 schema 参数的某些字符(例如 \)。 此项更改修复了该问题。 GitHub 问题 #2336
新增了令牌缓存映射,以修复后续连接的身份验证令牌意外使用 这修复了可能会无意中重复使用客户端凭据的问题。 正确缓存身份验证令牌时,驱动程序只使用客户端密码更改的令牌。 GitHub 问题 #2334
修复了对 CallableStatements 中 exec 转义语法的支持 这修复了删除包装的 sp_executesql/sp_prepexec 调用以快速执行 CallableStatements 后,EXEC 调用不再有效的问题。 GitHub 问题 #2325
执行修复,以确保 MoneySmallMoney 位于大容量复制的正确范围内 这修复了在将大容量复制与 MoneySmallMoney 值一起使用时,转换目标/来源值可能会导致 ArithmeticOverflowException 的问题。 GitHub 问题 #2309
执行修复,以确保 DataabseMetadata.getColumns()ResultSetMetadata 所有列正确 某些列返回的元数据不正确,此项更改修复了该问题。 GitHub 问题 #2232
执行修复,以在 connectRetryCount 设置为 0 时正确关闭连接重试 这修复了即使 connectRetryCount 设置为 0,驱动程序也会尝试重试,直至 loginTimeout 的问题。 GitHub 问题 #2232GitHub 问题 #2188
执行修复,以解决 ActivityCorrelator ThreadLocalClassLoader 泄漏问题 修复了在以前的驱动程序更改 ActivityId 后,ActivityCorrelator 中的 ThreadLocal 绝不会从线程中移除的问题。
执行修复,以直接执行 RPC 调用的存储过程 RPC 调用原本通过包装在 sp_executesql 调用中来使用以前的逻辑,此项更改修复了该行为。

以前的版本

12.6

下载 Microsoft JDBC Driver 12.6.4 for SQL Server (zip)
下载 Microsoft JDBC Driver 12.6.4 for SQL Server (tar.gz)

版本号:12.6.4
发布日期:2024 年 8 月 29 日

如果你需要下载非所检测到的语言的驱动程序,则可使用以下直接链接。
对于 zip 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语
对于 tar.gz 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 韩语 | 葡萄牙语(巴西) | 俄语 | 西班牙语

12.6 合规性

符合性更改 详细信息
下载 JDBC Driver 12.6 的最新更新。 GitHub,12.6.0
Maven Central
完全符合 JDBC API 规范 4.2。 根据 Java 版本兼容性命名 12.6 包中的 jar。

例如,12.6 包中的 mssql-jdbc-12.6.0.jre11.jar 文件应与 Java 11(或更高版本)配合使用。
与 Java 开发工具包 (JDK) 版本 21.0、17.0、11.0 和 1.8 兼容。 除 JDK 17.0、11.0 和 1.8 外,Microsoft JDBC Driver 12.6 for SQL Server 现在还与 Java 开发工具包 (JDK) 版本 21.0 兼容。

12.6 版本

版本号:12.6.4
发布日期:2024 年 8 月 29 日

修复了 12.6.4 中的问题:

  • 还原了“直接执行存储过程”功能,以及与该功能相关的后续更改。

下载 Microsoft JDBC Driver 12.6.4 for SQL Server (zip)
下载 Microsoft JDBC Driver 12.6.4 for SQL Server (tar.gz)

如果你需要下载非所检测到的语言的驱动程序,则可使用以下直接链接。
对于 zip 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语
对于 tar.gz 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 韩语 | 葡萄牙语(巴西) | 俄语 | 西班牙语

版本号:12.6.3
发布日期:2024 年 6 月 20 日

修复了 12.6.3 中的问题:

  • 修复了需要导入 TokenCredential 类的问题
  • 修复了时间戳字符串转换回归
  • 修复了 SQLServerCallableStatement 默认值回归

下载 Microsoft JDBC Driver 12.6.3 for SQL Server (zip)
下载 Microsoft JDBC Driver 12.6.3 for SQL Server (tar.gz)

如果你需要下载非所检测到的语言的驱动程序,则可使用以下直接链接。
对于 zip 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语
对于 tar.gz 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 韩语 | 葡萄牙语(巴西) | 俄语 | 西班牙语

版本号:12.6.2
发布日期:2024 年 5 月 23 日

12.6.2 中的新增功能:

  • 为托管标识凭证和默认 Azure 凭证添加了凭证缓存

修复了 12.6.2 中的问题:

  • 检查该金额和小金额是否处于正确的大容量复制范围内
  • 在递增之前检查 TDSCommand 计数器是否为 null
  • 重置语句池连接时清除已准备的语句缓存
  • 在重新连接之前清除准备的语句句柄
  • 直接执行 CallableStatements 的 RPC 调用
  • 已更正身份验证令牌对象以接受以毫秒为单位的过期
  • 成功打开连接后,loginTimeout 应取消绑定 SocketTimeout

下载 Microsoft JDBC Driver 12.6.2 for SQL Server (zip)
下载 Microsoft JDBC Driver 12.6.2 for SQL Server (tar.gz)

如果你需要下载非所检测到的语言的驱动程序,则可使用以下直接链接。
对于 zip 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语
对于 tar.gz 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 韩语 | 葡萄牙语(巴西) | 俄语 | 西班牙语

版本号:12.6.1
发布日期:2024 年 2 月 20 日

修复了 12.6.1 中的问题:

  • 修复了用于 CallableStatements 的“EXEC”转义语法

下载 Microsoft JDBC Driver 12.6.1 for SQL Server (zip)
下载 Microsoft JDBC Driver 12.6.1 for SQL Server (tar.gz)

如果你需要下载非所检测到的语言的驱动程序,则可使用以下直接链接。
对于 zip 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语
对于 tar.gz 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 韩语 | 葡萄牙语(巴西) | 俄语 | 西班牙语

版本号:12.6.0
发布日期:2024 年 1 月 31 日

下载 Microsoft JDBC Driver 12.6.0 for SQL Server (zip)
下载 Microsoft JDBC Driver 12.6.0 for SQL Server (tar.gz)

如果你需要下载非所检测到的语言的驱动程序,则可使用以下直接链接。
对于 zip 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语
对于 tar.gz 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 韩语 | 葡萄牙语(巴西) | 俄语 | 西班牙语

12.6 中的新增功能

Feature 详细信息
Java 21 支持 除 JDK 17.0、11.0 和 1.8 外,该驱动程序现在还与 Java 开发工具包 (JDK) 版本 21.0 兼容。
允许通过使用新的连接属性 useFlexibleCallableStatements 直接调用存储过程 与围绕 exec sp_executesql 整合过程相反,该驱动程序现在直接调用存储过程,从而简化此过程并提升性能。
添加了 useDefaultJaasConfig 连接字符串属性 如果设置为 true,则允许 Kerberos 身份验证,而无需其他外部配置。
添加了 useDefaultGSSCredential 连接字符串属性 如果设置为 true,则允许驱动程序在使用本机 GSS-API 进行 Kerberos 身份验证时代表用户创建 GSSCredential。
添加了 calcBigDecimalPrecision 连接字符串属性 如果设置为 true,则允许驱动程序计算 BigDecimal 输入的精度。
添加了用于连接打开重试和空闲连接复原能力重新连接的新命名记录器 连接打开重试使用重定向日志记录类别,并且可在 FINE 日志记录级别使用。 空闲连接复原能力重新连接使用复原能力日志记录类别,并且可在 FINE 或 FINER 日志记录级别使用。

12.6 中的更改

更改 详细信息
更改了 IBM JDK 检查以防止 OSGi 环境出现问题的方式 从只检查供应商名称更改为同时检查供应商和虚拟机名称。
正确同步对 MSAL 的所有调用 阻止驱动程序进行额外调用和证明不必要的对话。
添加了应转换为 RMFAIL 的更多错误 添加了应等于 RMFAIL 的更多案例“connection reset by peer”和“connection timed out”
更改了大容量复制中使用的时间戳 将大容量复制行为从序列化和反序列化时间戳对象更改为直接使用对象,从而在使用大量时间戳时提升性能。
更改了 socketTimeout 以确保确实小于 loginTimeout 以前,socketTimeout 独立于 loginTimeout 行动,可能会导致驱动程序比预期花费更长时间才超时的混乱行为。 已修复此问题,让 loginTimeout 始终具有等于 socketTimeout 的上限。
调整了 PreparedStatement 缓存。现在,每次执行前都会自行清除 之前不能正确清理 PreparedStatement 缓存,除了其频率外,随着时间推移会导致出现内存问题。 此更改可确保在每次执行前清理缓存,阻止对象增加。
升级到了更新的 Bouncycastle 依赖项 bcprov-jdk15onbcpkix-jdk15on 升级到 bcprov-jdk18onbcpkix-jdk18on,因为已不再更新前两者。
已更新依赖项 已更新 azure-identityazure-security-keyvault-keysbouncycastleh2msal 的依赖项版本。

12.6 中的修复

修复 详细信息
修复了 e.getCause() 缺少的 null 检查 修复例外没有原因的问题,例外本身现在被一起传递,以阻止其丢失。 GitHub 问题 #2299
修复了 IOBuffer 中的锁以阻止可能出现的死锁问题 修复了 IOBuffer 中锁的实现,特别是有关 disableSSL 的实现,以防止在某些情况下可能出现的死锁。 GitHub 问题 #2288GitHub 问题 #2265
修复批量插入的时间戳和大容量复制的问题 修复了通过大容量复制使用批量插入插入时间戳时,不能正确为时间戳应用时区的问题。 GitHub 问题 #2271
修复了 useBulkCopyForBatchInsert 缺少 Getter 和资源库的问题 修复 SQLServerConnectionSQLServerConnnectionPoolProxy 之间的行为应该相同当实际不同的问题,因为后者中的 useBulkCopyForBatchInsert 缺少 Getter 和资源库。 GitHub 问题 #2245
修复了大容量复制元数据查询以利用缓存数据(如可用) 修复即使已经缓存数据,每次调用时都要调用列元数据的问题。 GitHub 问题 #2224
修复了 TVP 值缺少 BigDecimal 缩放检查的问题 修复写入 TVP 行值时,没有适当为 BigDecimal 缩放筛选输入值的问题。 GitHub 问题 #2222
修复了 SQLServerDatabaseMetadata 中的 schemaPattern,确保其正确转义。 修复 schemaPattern 是 SQLServerDatabaseMetadata 中唯一未能正确转义的模式的问题。 GitHub 问题 #2186
修复尝试将日期转换为 long 时返回 null SQLState 的问题 修复当 xopenStates 设置为 true 时,驱动程序在特定实例中不返回预期 SQL-99 状态代码的问题。 GitHub 问题 #2167
修复了包含 TOP 的查询的 getMetaData 错误 修复在查询中使用 TOP 限定符时,驱动程序返回与 ParameterMetadata 相关的错误。 GitHub 问题 #1776
修复了使用批量插入时的表单名称分析问题 修复一般情况下缺少空格可以正常工作的插入声明,在使用批量插入时不工作的问题。 GitHub 问题 #1534
修复 ParameterMetadata 和无效索引的问题 修复 ParameterMetadata 未正确检查,并为无效的索引 0 引发例外的问题。 GitHub 问题 #1490
修复了 ActivityCorrelator 中的 ActivityID 的行为 修复了定义 ActivityID 的方式,并用于与其他 Microsoft 驱动程序的行为更一致。
修复为批量插入使用大容量复制时,忽略计算列 修复了大容量复制行为以忽略计算列,并允许批量插入,此前插入失败并返回引用这些计算列的错误。
修复了使用 Java 密钥存储库和 Azure 密钥库时有关签名的驱动程序行为 修复使用 Java 密钥存储库,以及添加新 API 为列主密钥元数据签名(并返回生成的签名),以便与 Java 密钥存储库和 Azure Key Vault 一起使用时,驱动程序不能正确验证签名的问题
修复了 getObject() 的 DateTimeOffset 错误转换 修复在 DATETIMEOFFSET 列调用 ResultSet.getObject() 时,LocalDate/LocalTime/LocalDateTime 作为类参数时,该列中的值会转换为本地时区的问题。

12.4

下载 Microsoft JDBC Driver 12.4.2 for SQL Server (zip)
下载 Microsoft JDBC Driver 12.4.2 for SQL Server (tar.gz)

版本号:12.4.2
发布日期:2023 年 10 月 27 日

如果你需要下载非所检测到的语言的驱动程序,则可使用以下直接链接。
对于 zip 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语
对于 tar.gz 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 韩语 | 葡萄牙语(巴西) | 俄语 | 西班牙语

12.4 合规性

符合性更改 详细信息
下载 JDBC Driver 12.4 的最新更新。 GitHub,12.4.0
Maven Central
完全符合 JDBC API 规范 4.2。 根据 Java 版本兼容性命名 12.4 包中的 jar。

例如,12.4 包中的 mssql-jdbc-12.4.0.jre11.jar 文件应与 Java 11(或更高版本)配合使用。
与 Java 开发工具包 (JDK) 版本 20.0、17.0、11.0 和 1.8 兼容。 除 JDK 17.0、11.0 和 1.8 外,Microsoft JDBC Driver 12.4 for SQL Server 现在还与 Java 开发工具包 (JDK) 版本 20.0 兼容。

12.4 发行版

版本号:12.4.2
发布日期:2023 年 9 月 21 日

12.4.2 中已修复的问题:

  • 将 IBM 检查还原到供应商检查,并添加了额外的虚拟机名称检查来删除误报

下载 Microsoft JDBC Driver 12.4.2 for SQL Server (zip)
下载 Microsoft JDBC Driver 12.4.2 for SQL Server (tar.gz)

如果你需要下载非所检测到的语言的驱动程序,则可使用以下直接链接。
对于 zip 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语
对于 tar.gz 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 韩语 | 葡萄牙语(巴西) | 俄语 | 西班牙语

版本号:12.4.1
发布日期:2023 年 8 月 24 日

12.4.1 中的更改:

  • 准备好的 SQL 参数名称现已应用自动间距

修复了 12.4.1 中的问题:

  • 修复了 Azure SQL 数据库中模拟安全性上下文中的元数据查询 getUserName
  • 修复了 IBM JDK 检测
  • 修复了 Java 密钥存储库未验证签名的 bug,并将 signColumnMasterkeyMetadata API 添加到 JKS 和 AKV
  • 添加了原始版本中缺失的错误字符串的本地化

下载 Microsoft JDBC Driver 12.4.1 for SQL Server (zip)
下载 Microsoft JDBC Driver 12.4.1 for SQL Server (tar.gz)

如果你需要下载非所检测到的语言的驱动程序,则可使用以下直接链接。
对于 zip 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语
对于 tar.gz 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 韩语 | 葡萄牙语(巴西) | 俄语 | 西班牙语

版本号:12.4.0
发布日期:2023 年 7 月 31 日

下载 Microsoft JDBC Driver 12.4.0 for SQL Server (zip)
下载 Microsoft JDBC Driver 12.4.0 for SQL Server (tar.gz)

如果你需要下载非所检测到的语言的驱动程序,则可使用以下直接链接。
对于 zip 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语
对于 tar.gz 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 韩语 | 葡萄牙语(巴西) | 俄语 | 西班牙语

12.4 中的新增功能

Feature 详细信息
Java 20 支持 除 JDK 17.0、11.0 和 1.8 外,该驱动程序现在还与 Java 开发工具包 (JDK) 版本 20.0 兼容。
增加了访问令牌回拨连接字符串属性 通过允许在连接字符串中传入回拨实现类的名称来补充之前实现的访问令牌回拨。
增加了对 ActiveDirectoryServicePrincipalCertificate 的支持 通过连接选项 authentication=ActiveDirectoryServicePrincipalCertificate,支持 Azure 标识库中的 ActiveDirectoryServicePrincipalCertificate,从而改进了用户体验。
添加了 XAER_RMFAIL 的另一个案例 在某些情况下,驱动程序仍返回 XAException 并出现错误 XAER_RMERR。 在 XA 错误处理中添加了一个额外案例,用于解决此问题。

12.4 中的更改

更改 详细信息
更新了联合身份验证逻辑,在提取令牌时使用持久性令牌缓存 此更新不仅提高了令牌获取场景中的性能,而且更容易与未来的 MSAL 版本兼容。
如果出现套接字超时,允许尝试故障转移伙伴 允许在套接字超时后使用提供的故障转移伙伴尝试重新连接。
提高了生成参数类型定义时的性能 通过预计算用于 buildParamTypeDefinitions 中的数组和字符串生成器的大小,以及删除不需要的字符串分配,提高了使用此方法的性能。
更改了 LOGIN 数据包中发送的 serverName 以包含 instanceName serverName 现在追加到 LOGIN 数据包中的 instanceName 末尾。
更新了 supportTransaction 方法,以便反映服务器是否支持事务 解决了以下问题:由于 Azure Synapse 不支持 supportTransaction 中使用的语法,导致 connection.rollback 不适用于 Azure Synapse 数据库。
更新 sp_cursor 调用,以便传入表单名称而不是空字符串 解决了更新一对多表时收到的 ResultSet 行更新不一致的问题。
更新了 supportsLikeEscapeClause(),以便检查 Azure 数据仓库 解决了尽管明确不支持该功能,但 supportsLikeEscapeClause 仍会为 AzureDW 返回 true 的问题。
升级到最新的 OSGi JDBC 规范 osgi.compendium 5.0.0 升级到 osgi.service.jdbc 1.1.0,以符合 OSGi JDBC 规范 8.1.0 的合规性。
更新了依赖项 已更新 azure-identityazure-security-keyvault-keysgsonh2msal 的依赖项版本。

12.4 中的修复

修复 详细信息
修复了 BigDecimal 存在的性能和内存问题 还原自 12.2 版以来有关 BigDecimal 的所有更改。 此修复解决了观察到的性能问题。 用户在使用 BigDecimal 时要小心,以免出现之前解决的截断问题。 GitHub 问题 #2176
修复了 encrypt=strict 的服务器证书验证 修复以确保在 encrypt 设置为 strict 的情况下正确验证服务器证书。 GitHub 问题 #2174
修复了在 Azure DB 中设置重定向模式时 lockTimeout 未生效的问题 修复了何时设置 lockTimeout,因为它只适用于 Azure 外部的连接,而不是像以前那样适用于 Azure 内部的连接。 GitHub 问题 #2110
修复了使用 findSocketUsingThreading 时的高线程计数问题 修复了未捕获的异常导致上游睡眠调用中断,从而导致重试速度过快的问题。 GitHub 问题 #2104
修复了共享计时器争用条件 修复了 SharedTimer 类中潜在的争用条件。 GitHub 问题 #2085
修复了存储过程和零结果 metaQuery 返回的错误 修复以下问题:如果在 metaQuery 执行存储过程后未返回任何结果,会返回未定义参数的错误。 GitHub 问题 #2063
修复了当插入中提供的列与表架构顺序不同时无效的批处理插入 修复使用 useBulkCopyForBatchInsert=true 可能导致列混乱和无效数据的问题。 GitHub 问题 #1992
修复了 XA 错误处理以重新引发 XAER_RMFAIL 而不是 XAER_RMERR 修复以下问题:在提交 XA 事务时,如果 SQL Server 从主节点故障转移到备用节点,驱动程序将返回带有错误代码 XAER_RMERR 的 XAException。 GitHub 问题 #1432
修复了活动 ID 和客户端 ID 行为,以保持与 JDBC 规范的一致性 修复了活动 ID 行为,使其在流程的生命周期内保持不变,始终发送 PRELOGIN 中的活动 ID,以及每个新连接的递增序列。 修复了在流程的生命周期内保留的客户端 ID。

12.2

下载 Microsoft JDBC Driver 12.2.0 for SQL Server (zip)
下载 Microsoft JDBC Driver 12.2.0 for SQL Server (tar.gz)

版本号:12.2.0
发布日期:2023 年 1 月 31 日

如果你需要下载非所检测到的语言的驱动程序,则可使用以下直接链接。
对于 zip 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语
对于 tar.gz 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语

12.2 合规性

符合性更改 详细信息
下载 JDBC Driver 12.2 的最新更新。 GitHub,12.2.0
Maven Central
完全符合 JDBC API 规范 4.2。 根据 Java 版本兼容性命名 12.2 包中的 jar。

例如,12.2 包中的 mssql-jdbc-12.2.0.jre11.jar 文件应与 Java 11(或更高版本)配合使用。
与 Java 开发工具包 (JDK) 版本 19.0、17.0、11.0 和 1.8.兼容。 除 JDK 17.0、11.0 和 1.8 外,Microsoft JDBC Driver 12.2 for SQL Server 现在还与 Java 开发工具包 (JDK) 版本 19.0 兼容。

12.2 版本

下载 Microsoft JDBC Driver 12.2.0 for SQL Server (zip)
下载 Microsoft JDBC Driver 12.2.0 for SQL Server (tar.gz)

版本号:12.2.0
发布日期:2023 年 1 月 31 日

如果你需要下载非所检测到的语言的驱动程序,则可使用以下直接链接。
对于 zip 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语
对于 tar.gz 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语

12.2 中的新功能

Feature 详细信息
Java 19 支持 除 JDK 17.0、11.0 和 1.8 外,该驱动程序现在还与 Java 开发工具包 (JDK) 版本 19.0 兼容。
添加了对访问令牌回调的支持 允许客户端代码在返回访问令牌的 DataSource 上注册回调。
添加了对 DefaultAzureCredential 的支持 通过连接选项 authentication=ActiveDirectoryDefault,同时支持 Azure 标识库中的 DefaultAzureCredentialIntelliJCredential,从而改进了用户体验。
添加了新的连接属性 datetimeParameterType,以指定用于日期/时间戳参数的数据类型 添加了连接属性 datetimeParameterType,它允许用户明确指定转换为 datetimedatetime2,从而提高了旧版数据库的兼容性。

12.2 中的更改

更改 详细信息
使驱动程序适合 Loom synchronized(foo) 替换为可重入锁,从而提高使用 Loom 时的性能。
托管标识身份验证使用 Azure 标识库 替换驱动程序的内置代码,以使用 Azure 标识库获取和缓存托管标识令牌。 这一更改在驱动程序之前支持的服务基础上,增加了对更多 Azure 服务的托管标识的支持。
使 MSAL 成为可选依赖项 使 msal4j 再次成为可选依赖项。
已更新依赖项 更新了 azure-identityazure-security-keyvault-keysantlr4-runtimebcprov-jdk15onbcpkix-jdk15onmsal 的依赖项版本。
更新为 ExtendedSocketOption 类的动态检查 解决了缺少的 ExtendedSocketOptions 返回 NoClassDefFoundError 的错误。

12.2 中的修复

Fix 详细信息
修复了引发数据库异常时的 null SQL 状态和零错误代码 修复以下问题:出现 SQL 错误后 SQL 状态和错误代码显示错误信息。 GitHub 问题 #2015
修复了空闲连接恢复,使 unprocessedResponseCount 不会过度递减 unprocessedResponseCount 只有在 doneToken.isFinal 为 true 时才需要递减,但它之前在任何情况下都会递减。 GitHub 问题 #1971
修复了连接到错误的 SQLServer 主机的问题 修复了并发问题:驱动程序连接到多个 SQLServer 主机时,可能与错误的主机建立连接。 GitHub 问题 #1964
修复了错误的 updateCount 对于 enablePrepareOnFirstPreparedStatementCall 和 prepexec/prepare,在 true/false 情况下都会发生不正确的更新计数。 GitHub 问题 #1961
修复了信任存储密码的加密/解密模糊处理方法中的并发问题 在信任存储密码模糊处理中为加密/解密添加了锁定。 GitHub 问题 #1939
修复了缓存帐户名称的大小写问题 修复了以下问题:将区分大小写的帐户名称发送到 Microsoft 身份验证库时,导致重复登录请求。 GitHub 问题 #1923
修复了查询取消 bug 修复了批处理查询中间歇性发生的查询取消 bug。 GitHub 问题 #1896
修复了可调用语句错误 修复了可调用语句“索引超出界限”和“参数未定义”错误。 GitHub 问题 #1871
修复了提取结果集时对 DONE 令牌的检查 将错过的案例添加到之前的 DONE_ERROR 修复,其中驱动程序忽略了由已终止会话导致的服务器 DONE_ERROR 状态。 GitHub 问题 #1846GitHub 问题 #1505
确保执行批处理时在所有情况下都清除 batchParamValues 解决了在使用批量更新发生故障时,未能正确清除批处理的问题。 GitHub 问题 #1767
修复了使用 BigDecimal 时发送的精度 修复了以下问题:默认情况下,BigDecimal 值以最大精度发送,这可能导致出现不必要的小数舍入。 GitHub 问题 #1489GitHub 问题 #942
修复了证明协议 NONE,使其适用于所有情况 修复了 NONE 证明协议背后的逻辑,使其适用于所有情况,而不仅仅是特定情况。
修复了 SecureStringUtil 中的争用条件 修复了创建 SecureStringUtil 期间 SecureStringUtil 中的争用条件。

11.2

下载 Microsoft JDBC Driver 11.2.3 for SQL Server (zip)
下载 Microsoft JDBC Driver 11.2.3 for SQL Server (tar.gz)

版本号:11.2.3
发布日期:2023 年 1 月 12 日

如果你需要下载非所检测到的语言的驱动程序,则可使用以下直接链接。
对于 zip 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语
对于 tar.gz 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语

11.2 合规性

符合性更改 详细信息
下载 JDBC Driver 11.2 的最新更新。 GitHub,11.2.0
Maven Central
完全符合 JDBC API 规范 4.2。 根据 Java 版本兼容性命名 11.2 包中的 jar。

例如,11.2 包中的 mssql-jdbc-11.20.jre17.jar 文件应与 Java 17 配合使用。
与 Java 开发工具包 (JDK) 版本 18.0、17.0、11.0 和 1.8 兼容。 除 JDK 17.0、11.0 和 1.8 外,Microsoft JDBC Driver 11.2 for SQL Server 现在还与 Java 开发工具包 (JDK) 版本 18.0 兼容。

11.2 版本

版本号:11.2.3
发布日期:2023 年 1 月 12 日

修复了 11.2.3 中的问题:

  • 修复了引发数据库异常时的 null SQL 状态和零错误代码
  • 修复了批处理查询中发生超时的情况下不正确的更新计数
  • 修复了使用 Azure Functions 时令牌到期日期不正确的问题
  • 修复了连接到错误的 SQLServer 主机的问题

版本号:11.2.2
发布日期:2022 年 12 月 15 日

修复了 11.2.2 中的问题:

  • 修复了空闲连接复原 bug
  • 清除空闲重新连接时准备的语句句柄缓存
  • 修复了可调用语句索引超出界限错误
  • 修复了提取结果集时对 DONE 令牌的检查
  • 修复了间歇性错误:“解密期间出现内部错误:标记不匹配!”

下载 Microsoft JDBC Driver 11.2.2 for SQL Server (zip)
下载 Microsoft JDBC Driver 11.2.2 for SQL Server (tar.gz)

如果你需要下载非所检测到的语言的驱动程序,则可使用以下直接链接。
对于 zip 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语
对于 tar.gz 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语

版本号:11.2.1
发布日期:2022 年 9 月 8 日

修复了 11.2.1 中的问题:

  • 使 com.microsoft.azure:msal4j 成为可选依赖项
  • 修复了批处理查询中间歇性发生的查询取消 bug

下载 Microsoft JDBC Driver 11.2.1 for SQL Server (zip)
下载 Microsoft JDBC Driver 11.2.1 for SQL Server (tar.gz)

如果你需要下载非所检测到的语言的驱动程序,则可使用以下直接链接。
对于 zip 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语
对于 tar.gz 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语

版本号:11.2.0
发布日期:2022 年 8 月 4 日

下载 Microsoft JDBC Driver 11.2.0 for SQL Server (zip)
下载 Microsoft JDBC Driver 11.2.0 for SQL Server (tar.gz)

如果你需要下载非所检测到的语言的驱动程序,则可使用以下直接链接。
对于 zip 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语
对于 tar.gz 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语

11.2 中的新功能

功能 详细信息
Java 18 支持 除 JDK 17.0、11.0 和 1.8 外,该驱动程序现在还与 Java 开发工具包 (JDK) 版本 18.0 兼容。
添加了可配置的 IPv6 支持 现在可在 IPv4 和 IPv6 之间设置客户端应用程序的 IP 地址首选项。 使用新的 ipaddresspreference 连接设置来控制行为。 有关详细信息,请参阅设置连接属性
添加了对准备方法选择的支持 添加了新的连接字符串属性 prepareMethod,用于切换使用 sp_prepare 和 sp_prepexec。 使用新的 prepareMethod 连接设置来控制行为。 有关详细信息,请参阅设置连接属性
为 encrypt=strict 添加了 serverCertificate 连接属性 添加了一个 serverCertificate 属性,该属性是服务器证书文件的路径(采用 PEM 格式)。 用于在使用设置为“严格”的“加密”时进行验证。 有关详细信息,请参阅设置连接属性
缓存参数元数据调用 现在可缓存参数化查询的加密相关信息。 请参阅通过 JDBC 驱动程序使用 Always Encrypted
添加了对批量插入 null GUID 值的支持 解决了在大容量插入模式下无法插入 null 值的问题。
添加了对缓存托管标识令牌的支持 允许缓存从托管标识终结点获取的令牌。

11.2 中的更改

更改 详细信息
为加密连接属性添加“严格”选项来支持 TDS 8.0 中断性变更:加密连接属性现在为字符串类型。
添加了对协商 ALPN 的检查 检查以确保成功协商应用层协议。
为 enclaveAttestationProtocol 添加了一个选项 添加了 NONE 协议选项,目的是使安全 enclave 能在无证明的情况下使用。
允许在连接字符串中对 serverName 重新排序 验证连接字符串的 serverName 字段是否没有等于号。
为缺失的 MSAL 库添加了更好的错误日志 在使用 ActiveDirectoryServicePrincipal 时缺失 MSAL 的情况下,添加了一条错误消息。
重构了空闲连接复原能力超时,以使用现有的 SharedTimer 通过使用现有的 SharedTimer,提高了空闲连接复原能力。
在严格模式下时,在 Login7 中发送 TDS 版本 8 在 encrypt=strict 的情况下,通过包含 TDS 版本 8 向 Login7 数据包添加了其他信息。
将默认 loginTimeout 值更改为 30s 将默认 loginTimeout 值从 15 秒更改为 30 秒,以便在超时之前有更多时间解决初始连接。
msal4j 依赖项现在是显式的 msal4j 添加了显式依赖项(在以前版本中是可传递依赖项)。
已更新依赖项 已更新 azure-identityazure-security-keyvault-keys 的依赖项版本。

11.2 中的修复

Fix 详细信息
修复了 prepareMethod=prepare 导致的错误 修复了 sp_prepare 在与批处理查询一起使用时导致的间歇性 null 准备语句句柄错误 GitHub 问题 #1880
修复了并行建立多个连接可能会引发 IndexOutOfBoundsException 的错误 修复了建立多个连接时可能导致 IndexOutOfBoundsException 的 addressList 争用条件 GitHub 问题 #1852
修复取消“insert into”语句时断言失败的错误 修复取消语句时驱动程序可能断言的问题 GitHub 问题 #1849
修复了在 SQL 数据库中终止会话时,未按预期引发异常 添加了对服务器上已终止会话中可能出现的 DONE_ERROR 状态令牌的检查 GitHub 问题 #1846
托管标识重试间隔 修复了托管标识重试间隔问题,现在以指数方式正确回退 GitHub 问题 #1765
删除了在 connectionCommand() 中对 executeCommand() 的额外调用 删除了对 executeCommand 的额外调用,该调用对某些用户造成了性能问题 GitHub 问题 #1669
修复了 selectMethod 的未知令牌错误 修复了 selectMethod 游标用于数据分类时出现的未知令牌错误 0xA3

10.2

下载 Microsoft JDBC Driver 10.2.3 for SQL Server (zip)
下载 Microsoft JDBC Driver 10.2.3 for SQL Server (tar.gz)

版本号:10.2.3
发布日期:2023 年 1 月 12 日

如果你需要下载非所检测到的语言的驱动程序,则可使用以下直接链接。
对于 zip 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语
对于 tar.gz 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 韩语 | 葡萄牙语(巴西) | 俄语 | 西班牙语

版本号:10.2.2
发布日期:2022 年 12 月 13 日

下载 Microsoft JDBC Driver 10.2.2 for SQL Server (zip)
下载 Microsoft JDBC Driver 10.2.2 for SQL Server (tar.gz)

如果你需要下载非所检测到的语言的驱动程序,则可使用以下直接链接。
对于 zip 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语
对于 tar.gz 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语

版本号:10.2.1
发布日期:2022 年 5 月 12 日

下载 Microsoft JDBC Driver 10.2.1 for SQL Server (zip)
下载 Microsoft JDBC Driver 10.2.1 for SQL Server (tar.gz)

如果你需要下载非所检测到的语言的驱动程序,则可使用以下直接链接。
对于 zip 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语
对于 tar.gz 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语

10.2 合规性

符合性更改 详细信息
下载 JDBC Driver 10.2 的最新更新。 GitHub,10.2.0
Maven Central
完全符合 JDBC API 规范 4.2。 根据 Java 版本兼容性命名 10.2 包中的 jar。

例如,10.2 包中的 mssql-jdbc-10.20.jre17.jar 文件应与 Java 17 配合使用。
与 Java 开发工具包 (JDK) 版本 17.0、11.0 和 1.8 兼容。 除 JDK 11.0 和 1.8 外,Microsoft JDBC Driver 10.2 for SQL Server 现在还与 Java 开发工具包 (JDK) 版本 17.0 兼容。

10.2 版本

版本号:10.2.3
发布日期:2023 年 1 月 12 日

修复了 10.2.3 中的问题:

  • 修复了批处理查询中发生超时的情况下不正确的更新计数
  • 修复了使用 Azure Functions 时令牌到期日期不正确的问题
  • 修复了引发数据库异常时的 null SQL 状态和零错误代码

版本号:10.2.2
发布日期:2022 年 12 月 13 日

修复了 10.2.2 中的问题:

  • 清除空闲连接复原重新连接时准备的语句缓存
  • 修复了设置 KeepAlive 扩展选项
  • 修复了取消语句时驱动程序可能断言的问题
  • 修复了可调用语句索引超出界限错误
  • 修复了不检查 DONE 令牌错误以至异常被忽略的问题
  • 修复了查询取消 bug

版本号:10.2.1
发布日期:2022 年 5 月 12 日

修复了 10.2.1 中的问题:

  • 更改了空闲连接复原能力超时,以使用现有的 SharedTimer
  • 修复了托管标识身份验证重试间隔,以指数方式正确回退
  • 删除了在 connectionCommand() 中对 executeCommand() 的超量调用

版本号:10.2.0
发行时间:2022 年 1 月 31 日

下载 Microsoft JDBC Driver 10.2.0 for SQL Server (zip)
下载 Microsoft JDBC Driver 10.2.0 for SQL Server (tar.gz)

如果你需要下载非所检测到的语言的驱动程序,则可使用以下直接链接。
对于 zip 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语
对于 tar.gz 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语

10.2 中的新功能

Feature 详细信息
Java 17 支持 除 JDK 11.0 和 1.8 外,该驱动程序现在还与 Java 开发工具包 (JDK) 版本 17.0 兼容。
空闲连接复原支持 现支持空闲连接复原。 请参阅空闲连接复原
多用户密钥存储提供程序 驱动程序在连接和语句级别现支持密钥存储提供程序,可支持多用户场景。 请参阅通过 JDBC 驱动程序使用 Always Encrypted

10.2 中的更改

更改 详细信息
默认情况下,加密设置为 true 中断性变更:默认情况下启用 TLS 加密。
encrypt = false 时证书验证 中断性变更:当 encrypt = false 但服务器要求加密时,将根据 trustServerCertificate 连接设置验证证书。
aadSecurePrincipalId 和 aadSecurePrincipalSecret 已弃用 已弃用 aadSecurePrincipalId 和 aadSecurePrincipalSecret 连接属性。 请改用用户名和密码。
已删除 getAADSecretPrincipalId API 中断性变更:出于安全考虑,已删除 getAADSecretPrincipalId API。
SQL_Variant 支持 添加了在检索 DateTimeOffset 时对 SQL_Variant 数据类型的支持。
Linux 中的非阻止随机 更新为在为 enclave 包生成 GUID 时使用非阻止随机调用。
针对领域的 CNAME 解析 在指定领域时,添加了 CNAME 解析。
已更新依赖项 已更新 azure-identityazure-security-keyvault-keysgsonbouncycastle 的依赖项版本。

10.2 中的修复

Fix 详细信息
TDSParser 停滞在 TDS_COLMETADATA 已修复:TDSParser 停滞在 TDS_COLMETADATA,这可能会导致某些查询挂起。 GitHub 问题 #1661

9.4

下载 Microsoft JDBC Driver 9.4.1 for SQL Server (zip)
下载 Microsoft JDBC Driver 9.4.1 for SQL Server (tar.gz)

版本号:9.4.1
发布日期:2021 年 7 月

如果你需要下载非所检测到的语言的驱动程序,则可使用以下直接链接。
对于 zip 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语
对于 tar.gz 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语

9.4 合规性

符合性更改 详细信息
下载 JDBC Driver 9.4 的最新更新。 GitHub,9.4.0
Maven Central
完全符合 JDBC API 规范 4.2。 根据 Java 版本兼容性命名 9.4 包中的 jar。

例如,9.4 包中的 mssql-jdbc-9.4.0.jre16.jar 文件应与 Java 16 配合使用。
与 Java 开发工具包 (JDK) 版本 16.0、11.0 和 1.8 兼容。 除 JDK 11.0 和 1.8 外,Microsoft JDBC Driver 9.4 for SQL Server 现在还与 Java 开发工具包 (JDK) 版本 16.0 兼容。

9.4 版本

版本号:9.4.1
发布日期:2021 年 12 月 7 日

修复了 9.4.1 中的问题:

  • 修复了驱动程序遇到不支持的 TDS_COLMETADATA 时的潜在挂起
  • 修复了大容量复制中 LocalDateTime 和 LocalTime 到字符串的转换

版本号:9.4.0
发布日期:2021 年 7 月 30 日

下载 Microsoft JDBC Driver 9.4.0 for SQL Server (zip)
下载 Microsoft JDBC Driver 9.4.0 for SQL Server (tar.gz)

如果你需要下载非所检测到的语言的驱动程序,则可使用以下直接链接。
对于 zip 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语
对于 tar.gz 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语

9\.4 中的新增功能

Feature 详细信息
Java 16 支持 除 JDK 11.0 和 1.8 外,该驱动程序现在还与 Java 开发工具包 (JDK) 版本 16.0兼容。
复制连接支持 现在支持复制连接。 请参阅设置连接属性
自定义 Kerberos 身份验证领域 驱动程序现在支持在使用 Kerberos 身份验证时指定自定义身份验证领域。 请参阅设置连接属性
打开连接重试 已添加 connectRetryCountconnectRetryInterval 连接属性,以便配置打开连接时的自动重试。 有关这些新属性的详细信息,请参阅设置连接属性

9\.4 中的更改

更改 详细信息
Azure Key Vault 提供程序 可以打开指定不同 Azure Key Vault 提供程序信息的多个连续的连接。
已更新错误消息 与 Enclave 异常相关的错误消息现在包含指向故障排除指南的链接。
与 Active Directory 身份验证失败相关的错误消息现在包括基础库中的错误字符串。
发送到服务器的驱动程序版本 驱动程序版本现在会在 PRELOGIN 期间正确发送到数据库。
客户端进程 ID 客户端进程 ID 现在会在 Java 9+ 上运行时发送到服务器。 Java 8 保留以前发送 0 作为客户端进程 ID 的功能。
已更新依赖项 已更新 azure-identityazure-security-keyvault-keysgsonantlrbouncycastle 的依赖项版本。
已删除不必要的引用 删除了 Java 8 jar 中未使用的特定于 Java 9 的类引用

9.4 中的修复

Fix 详细信息
GitHub 问题 #1499 已修复:Batch 在连接字符串中启用 Always Encrypted 并调用 clearParameters 时失败。
GitHub 问题 #1632 已修复:新连接上的少量内存泄漏。
GitHub 问题 #1565 修复使用 applicationIntent=ReadOnly 时 trustStorePassword 为 null 的问题
GitHub 问题 #1568 修复重定向令牌在 servername 中包含命名实例的问题
GitHub 问题 #1531 修复了 TDSWriter.writeString() 中潜在的整数溢出

9.2

下载 Microsoft JDBC Driver 9.2.1 for SQL Server (zip)
下载 Microsoft JDBC Driver 9.2.1 for SQL Server (tar.gz)

版本号:9.2.1
发布日期:2021 年 3 月 2 日

如果你需要下载非所检测到的语言的驱动程序,则可使用以下直接链接。
对于 zip 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语
对于 tar.gz 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语

9.2 合规性

符合性更改 详细信息
下载 JDBC Driver 9.2 的最新更新。 GitHub,9.2.1
Maven Central
完全符合 JDBC API 规范 4.2。 根据 Java 版本兼容性命名 9.2 包中的 jar。

例如,9.2 包中的 mssql-jdbc-9.2.1.jre15.jar 文件应与 Java 15 配合使用。
与 Java 开发工具包 (JDK) 版本 15.0、11.0 和 1.8 兼容。 除 JDK 11.0 和 1.8 外,Microsoft JDBC Driver 9.2 for SQL Server 现在还与 Java 开发工具包 (JDK) 版本 15.0 兼容。

9.2 版本

版本号:9.2.1
发布日期:2021 年 3 月 2 日

修复了9.2.1 中的问题:

  • 修复在 Azure 环境中进行 ActiveDirectoryServicePrincipal 身份验证期间客户端密码为空的问题。

版本号:9.2.0
发布日期:2021 年 1 月 29 日

下载 Microsoft JDBC Driver 9.2.0 for SQL Server (zip)
下载 Microsoft JDBC Driver 9.2.0 for SQL Server (tar.gz)

如果你需要下载非所检测到的语言的驱动程序,则可使用以下直接链接。
对于 zip 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语
对于 tar.gz 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语

支持 JDK 15

除 JDK 11.0 和 1.8 外,Microsoft JDBC Driver 9.2 for SQL Server 现在还与 Java 开发工具包 (JDK) 版本 15.0 兼容。

添加了对 Azure Active Directory 交互式身份验证的支持

添加身份验证类型 详细信息
Microsoft JDBC Driver 9.2 for SQL Server 现支持通过交互式身份验证向 Azure Key Vault 进行身份验证。 请参阅使用 Azure Active Directory 身份验证进行连接

添加了对 Azure Active Directory 服务主体身份验证的支持

添加身份验证类型 详细信息
Microsoft JDBC Driver 9.2 for SQL Server 现在支持使用服务主体标识的客户端 ID 和密码来向 Azure Key Vault 进行身份验证。 请参阅使用 Azure Active Directory 身份验证进行连接

更新 Azure Key Vault 库以使用新式 Azure Key Vault 库

Azure Key Vault 的库更改 详细信息
Microsoft JDBC Driver 9.2 从上一代的 Azure Key Vault 库和 ADAL 库迁移到了更新式的 Azure Key Vault 和 Azure Identity 等效项。 依赖项变更如果利用 Azure Active Directory 身份验证或 Azure Key Vault,请确保更新应用程序依赖项。 使用 Azure Key Vault 提供程序Azure Active Directory 身份验证时,请参阅依赖项要求

为非 Azure Synapse Analytics 服务器启用了 useBulkCopyForBatchInsert

非 Azure Synapse Analytics 服务器的 useBulkCopyForBatchInsert 更改 详细信息
Microsoft JDBC Driver 9.2 现在允许大容量复制 API 针对 Azure Synapse Analytics 服务器进行批量插入操作。 请参阅将大容量复制 API 用于批量插入操作

8.4

下载 Microsoft JDBC Driver 8.4 for SQL Server (zip)
下载 Microsoft JDBC Driver 8.4 for SQL Server (tar.gz)

版本号:8.4.1
发布日期:2020 年 8 月 27 日

如果你需要下载非所检测到的语言的驱动程序,则可使用以下直接链接。
对于 zip 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语
对于 tar.gz 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语

8.4 合规性

符合性更改 详细信息
下载 JDBC Driver 8.4 的最新更新。 GitHub,8.4.1
Maven Central
完全符合 JDBC API 规范 4.2。 根据 Java 版本兼容性命名 8.4 包中的 jar。

例如,8.4 包中的 mssql-jdbc-8.4.1.jre14.jar 文件应与 Java 14 配合使用。
与 Java 开发工具包 (JDK) 版本 14.0、11.0 和 1.8 兼容。 除 JDK 11.0 和 1.8 外,Microsoft JDBC Driver 8.4 for SQL Server 现在还与 Java 开发工具包 (JDK) 版本 14.0 兼容。

8.4 版本

版本号:8.4.1
发布日期:2020 年 8 月 27 日
已解决的问题:

  • 修复 SQLServerConnectionPoolProxydelayLoadingLobs 不兼容的问题
  • 修复了 delayLoadingLobs 的潜在 NullPointerException 问题
  • 修复使用 Windows 证书存储时解密列加密密钥的问题

版本号:8.4.0
发布日期:2020 年 7 月 31 日

支持 JDK 14

除 JDK 11.0 和 1.8 外,Microsoft JDBC Driver 8.4 for SQL Server 现在还与 Java 开发工具包 (JDK) 版本 14.0 兼容。

添加了对使用托管标识向 Azure Key Vault 进行身份验证的支持

添加身份验证类型 详细信息
Microsoft JDBC Driver 8.4 for SQL Server 现支持使用托管标识向 Azure Key Vault 进行身份验证。 请参阅通过 JDBC 驱动程序使用 Always Encrypted

Azure 数据仓库的大容量复制扩展支持

Azure 数据仓库的大容量复制更改 详细信息
Microsoft JDBC Driver 8.4 添加新的连接属性 sendTemporalDataTypesAsStringForBulkCopy。 默认情况下,此布尔属性为 TRUE。 请参阅通过 JDBC 驱动程序使用大容量复制

添加了对 Azure SQL DNS 缓存的支持

DNS 缓存 详细信息
Microsoft JDBC Driver 8.4 for SQL Server 现支持针对 Azure VM 上的 SQL Server 的 DNS 缓存。  

为流式处理 LOB 对象添加了向后兼容性

LOB 流式处理 详细信息
Microsoft JDBC Driver 8.4 for SQL Server 添加了新的连接属性 delayLoadingLobs delayLoadingLobs 设置为 FALSE 会导致不对从 ResultSet 检索到的所有 LOB 对象进行流式处理。 此设置意味着,驱动程序会一次将整个 LOB 对象加载到内存中,这类似于版本 6.4 发布前驱动程序的运作方式。

添加了对环回方案的客户端证书身份验证的支持

客户端证书身份验证 详细信息
Microsoft JDBC Driver 8.4 for SQL Server 为环回方案添加了称为“客户端证书身份验证”的新身份验证方法。 请参阅环回方案的客户端证书身份验证

8.2

下载 Microsoft JDBC Driver 8.2 for SQL Server (zip)
下载 Microsoft JDBC Driver 8.2 for SQL Server (tar.gz)

版本号:8.2.2 发布时间:2020 年 3 月 24 日

如果你需要下载非所检测到的语言的驱动程序,则可使用以下直接链接。
对于 zip 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语
对于 tar.gz 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语

8.2 合规性

符合性更改 详细信息
下载 JDBC Driver 8.2 的最新更新。 GitHub,8.2.2
Maven Central
完全符合 JDBC API 规范 4.2。 根据 Java 版本兼容性命名 8.2 包中的 jar。

例如,8.2 包中的 mssql-jdbc-8.2.2.jre11.jar 文件应与 Java 11 配合使用。
与 Java 开发工具包 (JDK) 版本 13.0、11.0 和 1.8 兼容。 除 JDK 11.0 和 1.8 外,Microsoft JDBC Driver 8.2 for SQL Server 现在还与 JDK 开发工具包 (JDK) 版本 13.0 兼容。

8.2 版本

版本号:8.2.2
发布日期:2020 年 3 月 24 日
已解决的问题:

  • 添加了用于配置受信任的 Azure Key Vault 终结点列表的选项

版本号:8.2.1
发布日期:2020 年 2 月 26 日
已解决的问题:

  • 修复了使用 SQLServerResultSet.getObject() 检索 java.time.LocalTimejava.time.LocalDate 类型的数据时可能出现的 NullPointerException 问题

版本号:8.2.0
发布日期:2020 年 1 月 31 日

支持 JDK 13

除 JDK 11.0 和 1.8 外,Microsoft JDBC Driver 8.2 for SQL Server 现在还与 JDK 开发工具包 (JDK) 版本 13.0 兼容。

具有安全 Enclave 的 Always Encrypted

Always Encrypted 更改 详细信息
Microsoft JDBC Driver 8.2 for SQL Server 现在支持具有安全 Enclave 的 Always Encrypted。 此处提供了更多详细信息:具有安全 Enclave 的 Always Encrypted。
更多详细信息和示例代码。 请参阅具有安全 Enclave 的 Always Encrypted

提高了从 SQL Server 检索临时数据类型时的性能 1

临时数据类型更改 详细信息
Microsoft JDBC Driver 8.2 for SQL Server 提高了从 SQL Server 检索临时数据类型时的性能。 此更改通过尽可能避免使用 java.util.Calendar 来消除不必要的临时数据类型转换。
此性能改进会影响以下临时数据类型列表;格式为“SQL Server 数据类型”(Java 映射)。 date (java.sql.Date)、datetime (java.sql.Timestamp)、datetime2 (java.sql.Timestamp)、smalldatetime (java.sql.Timestamp) 和 time (java.sql.Time)。

1 由于 java.util.Calendar 和 java.time.LocalDateTime API 在处理时区方面存在差异,因此具有用户提供的与其关联的 java.util.Calendar 对象的时态数据类型或 microsoft.sql.DateTimeOffset 数据类型无法受益于这一改进。

将 mssql-jdbc_auth-<version>-<arch>.dll(之前是 sqljdbc_auth.dll)部署到 Maven 存储库

sqljdbc_auth.dll 更改 详细信息
从 Microsoft JDBC Driver 8.2 for SQL Server 开始,驱动程序依赖于 mssql-jdbc_auth-<version>-<arch>.dll(而不是 sqljdbc_auth.dll)来使用 Azure Active Directory 身份验证功能。  
DLL 已上传到 Maven 存储库,以便更轻松地进行访问。 请参阅本页

8.2 已知问题

已知问题 详细信息
运用 Java 8 来使用具有安全 Enclave 的 Always Encrypted 时。 用户必须将 BouncyCastle 提供程序作为依赖项,或者映射/加载支持 RSASSA-PSS 签名算法的安全提供程序。

7.4.1

下载 Microsoft JDBC Driver 7.4.1 for SQL Server (self-extracting exe)
下载 Microsoft JDBC Driver 7.4.1 for SQL Server (tar.gz)

版本号:7.4.1
发布日期:2019 年 8 月 2 日

如果你需要下载非所检测到的语言的驱动程序,则可使用以下直接链接。
对于 self-extracting exe 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语
对于 tar.gz 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语

7.4 合规性

符合性更改 详细信息
下载 JDBC Driver 7.4 的最新更新。 GitHub,7.4.1
Maven Central
完全符合 JDBC API 规范 4.2。 根据 Java 版本兼容性命名 7.4 包中的 jar。

例如,7.4 包中的 mssql-jdbc-7.4.1.jre11.jar 文件应与 Java 11 配合使用。
与 Java 开发工具包 (JDK) 版本 12.0、11.0 和 1.8 兼容。 除 JDK 11.0 和 1.8 外,Microsoft JDBC Driver 7.4 for SQL Server 现在还与 JDK 开发工具包 (JDK) 版本 12.0 兼容。

7.4 版本

版本号:7.4.1
发布日期:2019 年 8 月 2 日
已解决的问题:

  • SQLServerDataTableSQLServerDataColumn 恢复了新的 hashCode()equals() API 实现,因为 API 更改中断了向后兼容性

版本号:7.4.0
发布日期:2019 年 7 月 31 日

支持 JDK 12

除 JDK 11.0 和 1.8 外,Microsoft JDBC Driver 7.4 for SQL Server 现在还与 JDK 开发工具包 (JDK) 版本 12.0 兼容。

引入 NTLM 身份验证

NTLM 更改 详细信息
支持 NTLM 身份验证模式。 这种身份验证模式允许 Windows 和非 Windows 客户端使用 Windows 域用户对 SQL Server 进行身份验证。
使用此身份验证模式的更多详细信息以及示例应用程序。 请参阅使用 NTLM 身份验证进行连接

通过 useFmtOnly 引入了对 ParameterMetaData 的查询

useFmtOnly 更改 详细信息
添加了 useFmtOnly 连接属性。 借助此功能,用户可以选择通过 SET FMTONLY ON 旧版 API 查询 ParameterMetaData。 此设置对于 sp_describe_undeclared_parameters 不按预期执行的情况很有用。
更多详细信息和限制。 请参阅使用 useFmtOnly

更新了 Microsoft Azure Key Vault SDK for Java 版本 1.2.1

Key Vault SDK 更改 详细信息
已将 Microsoft Azure Key Vault SDK for Java 的 Maven 依赖项更新为版本 1.2.1。  
删除作为 Maven 依赖项的 Microsoft Azure SDK for Key Vault WebKey  
更多详细信息。 请参阅 Microsoft JDBC Driver for SQL Server 的功能依赖项

7.4 已知问题

已知问题 详细信息
使用 NTLM 身份验证时。 目前不支持同时启用扩展保护和加密连接。
使用 useFmtOnly 时。 此功能存在一些问题,是由 SQL 分析逻辑中的缺陷导致的。 有关详细信息和解决方法建议,请参阅使用 useFmtOnly

7.2.2

下载 Microsoft JDBC Driver 7.2.2 for SQL Server (self-extracting exe)
下载 Microsoft JDBC Driver 7.2.2 for SQL Server (tar.gz)

版本号:7.2.2
发布日期:2019 年 4 月 16 日

如果你需要下载非所检测到的语言的驱动程序,则可使用以下直接链接。
对于 self-extracting exe 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语
对于 tar.gz 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语

7.2 合规性

符合性更改 详细信息
下载 JDBC Driver 7.2 的最新更新。 GitHub,7.2.2
Maven Central
完全符合 JDBC API 规范 4.2。 根据 Java 版本兼容性命名 7.2 包中的 jar。

例如,7.2 包中的 mssql-jdbc-7.2.2.jre11.jar 文件应与 Java 11 配合使用。
除 Java 开发工具包 (JDK) 版本 1.8 外,还与 JDK 11.0 兼容。 除 Java 开发工具包 (JDK) 版本 1.8 外,Microsoft JDBC Driver 7.2 for SQL Server 现在还与 JDK 11.0 兼容。

7.2 版本

版本号:7.2.2
发布日期:2019 年 4 月 16 日
已解决的问题:

  • 修复了无法正确清除 ActivityID 的问题

版本号:7.2.1
发布日期:2019 年 2 月 11 日
已解决的问题:

  • 修复了某些参数化查询的分析问题

版本号:7.2.0
发布日期:2019 年 1 月 31 日

Azure Active Directory 托管标识 (MSI) 身份验证

MSI 更改 详细信息
支持 Active Directory 托管标识 (MSI) 身份验证模式。 此身份验证模式适用于支持“标识”功能的 Azure 资源。

两种类型的托管标识 (MSI) 均受驱动程序支持,可获取用于建立安全连接的 accessToken。
使用此身份验证模式的更多详细信息以及示例应用程序。 请参阅使用 Azure Active Directory 身份验证进行连接

引入开放服务网关协议 (OSGi) 支持

OSGi 更改 详细信息
添加了 DataSourceFactory 实现。 org.osgi.service.jdbc.DataSourceFactory
com.microsoft.sqlserver.jdbc.osgi.SQLServerDataSourceFactory
添加了 Activator 实现。 org.osgi.framework.BundleActivator
com.microsoft.sqlserver.jdbc.osgi.Activator

引入 SQLServerError API

错误 API 更改 详细信息
引入了 SQLServerError API。 Getter API 用于检索有关服务器生成错误的更多详细信息。

SQLServerException.getSQLServerError()
SQLServerError
更多详细信息。 请参阅处理错误

更新了用于 Java 的 Microsoft Azure Active Directory 身份验证库 (ADAL4J) 版本 1.6.3

ADAL4J 更改 详细信息
已将 ADAL4J 上的 Maven 依赖项更新为版本 1.6.3。  
引入了Java Client Runtime for AutoRest作为 Maven 依赖项版本 1.6.5。  
更多详细信息。 请参阅 Microsoft JDBC Driver for SQL Server 的功能依赖项

更新了 Microsoft Azure Key Vault SDK for Java 版本 1.2.0

Key Vault SDK 更改 详细信息
已将 Microsoft Azure Key Vault SDK for Java 的 Maven 依赖项更新为版本 1.2.0。  
引入了 Microsoft Azure SDK for Key Vault WebKey 作为 Maven 依赖项(版本 1.2.0)。  
更多详细信息。 请参阅 Microsoft JDBC Driver for SQL Server 的功能依赖项

7.2 已知问题

已知问题 详细信息
在某些情况下,参数化查询。 已于 2019 年 2 月发布 7.2.0 版本和 v7.2.1 的更新来解决此问题。
清除 ActivityID。 已于 2019 年 4 月发布 7.2.1 版本和 v7.2.2 的更新来解决此问题。

7.0

下载 Microsoft JDBC Driver 7.0 for SQL Server (self-extracting exe)
下载 Microsoft JDBC Driver 7.0 for SQL Server (tar.gz)

版本号:7.0.0
发布日期:2018 年 7 月 31 日

如果你需要下载非所检测到的语言的驱动程序,则可使用以下直接链接。
对于 self-extracting exe 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语
对于 tar.gz 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语

Microsoft JDBC Driver 7.0 for SQL Server 完全符合 JDBC API 规范 4.2。 根据 Java 版本兼容性命名 7.0 包中的 jar。 例如,7.0 包中的 mssql-jdbc-7.0.0.jre10.jar 文件应与 Java 10 配合使用。

支持 JDK 10

除 Java 开发工具包 (JDK) 版本 1.8 外,Microsoft JDBC Driver 7.0 for SQL Server 现在还与 JDK 10.0 兼容。 此更新还通过其清单文件将驱动程序的 Automatic-Module-Name 公开为 com.microsoft.sqlserver.jdbc

支持空间数据类型

Microsoft JDBC Driver 7.0 for SQL Server 现在提供对 SQL Server 空间数据类型 Geography 和 Geometry 的支持。 有关空间数据类型 API 以及如何使用它们的详细信息,请参阅使用空间数据类型

JDBC 4.3 实现引入了 java.sql.Connection API beginRequest() 和 endRequest()

Microsoft JDBC Driver 7.0 for SQL Server 现在实现了 java.sql.Connection 类中的 beginRequest()endRequest() API。 这些 API 是使用 JDBC 4.3 规范和 JDK 9 引入的。 有关这些 API 的驱动程序实现的详细信息,请参阅 JDBC 驱动程序的 JDBC 4.3 符合性

支持 SQL 数据发现和分类

Microsoft JDBC Driver 7.0 for SQL Server 支持 SQL 数据发现和分类,以用于支持此功能的任何目标数据库。 驱动程序现在公开 SQLServerResultSet.getSensitivityClassification() API 以从提取的 ResultSet 中提取此信息。

若要详细了解如何将此功能用于 JDBC 驱动程序,请参阅 SQL 数据发现和分类中的示例。

添加了连接属性:useBulkCopyForBatchInsert

Microsoft JDBC Driver 7.0 for SQL Server 引入了新的连接属性 useBulkCopyForBatchInsert。 只有 Azure Synapse Analytics 才支持此属性。

默认情况下禁用此属性。 当将大量数据推送到 Azure Synapse Analytics 时,可以启用此属性以提高用户应用程序的性能。 启用此属性将更改批插入操作的行为,以切换为对用户提供的数据执行大容量复制操作。 有关此属性及其限制的详细信息,请参阅将大容量复制 API 用于批插入操作

添加了连接属性:cancelQueryTimeout

Microsoft JDBC Driver 7.0 for SQL Server 引入了新的连接属性 cancelQueryTimeout 以取消 java.sql.Connectionjava.sql.Statement 对象上的 queryTimeout

添加了 Azure Key Vault 提供程序构造函数

Microsoft JDBC Driver 7.0 for SQL Server 为 SQLServerColumnEncryptionAzureKeyVaultProvider 重新引入了先前删除的构造函数。 它允许通过用 SQLServerKeyVaultAuthenticationCallback 实现的自定义方法进行身份验证来提取访问令牌。

新的构造函数具有以下定义:

/* This constructor is added to provide backward compatibility with 6.0
* version of the driver. It is marked deprecated for removal in the next
* stable release.
*/
@Deprecated
public SQLServerColumnEncryptionAzureKeyVaultProvider(
        SQLServerKeyVaultAuthenticationCallback authenticationCallback,
        ExecutorService executorService) throws SQLServerException;

/*New constructor to replace the above constructor*/
public SQLServerColumnEncryptionAzureKeyVaultProvider(
            SQLServerKeyVaultAuthenticationCallback authenticationCallback) throws SQLServerException;

更新了“用于 Java 的 Microsoft Azure Active Directory 身份验证库 (ADAL4J)”版本:1.6.0

Microsoft JDBC Driver 7.0 for SQL Server 已将“用于 Java 的 Microsoft Azure Active Directory 身份验证库 (ADAL4J)”上的 Maven 依赖项更新为版本 1.6.0。 有关依赖项的详细信息,请参阅 Microsoft JDBC Driver for SQL Server 的功能依赖项

6.4

下载 Microsoft JDBC Driver 6.4 for SQL Server (self-extracting exe)
下载 Microsoft JDBC Driver 6.4 for SQL Server (tar.gz)

版本号:6.4.0
发布日期:2018 年 2 月 27 日

如果你需要下载非所检测到的语言的驱动程序,则可使用以下直接链接。
对于 self-extracting exe 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语
对于 tar.gz 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语

Microsoft JDBC Driver 6.4 for SQL Server 完全符合 JDBC 规范 4.1 和 4.2。 根据 Java 版本兼容性命名 6.4 包中的 jar。 例如,6.4 包中的 mssql-jdbc-6.4.0.jre8.jar 文件必须与 Java 8 配合使用。

支持 JDK 9

除了支持 JDK 8.0 和 7.0 以外,驱动程序还支持 JDK 版本 9.0。

JDBC 4.3 符合性

除了支持 4.1 和 4.2 以外,驱动程序还支持 Java Database Connectivity API 4.3 规范。 JDBC 4.3 API 方法已添加,但尚未实现。 有关详细信息,请参阅 JDBC Driver 的 JDBC 4.3 合规性

添加了连接属性:sslProtocol

新的连接属性允许用户指定 TLS 协议关键字。 可能的值包括:“TLS”“TLSv1”“TLSv1.1”和“TLSv1.2”。有关详细信息,请参阅 SSLProtocol

弃用了连接属性:fipsProvider

连接属性 fipsProvider 已从接受的连接属性的列表中删除。 有关详细信息,请参阅相关的 GitHub 拉取请求

添加了用于指定自定义 TrustManager 的连接属性

驱动程序现在支持指定添加了 trustManagerClasstrustManagerConstructorArg 连接属性的自定义 TrustManager。 可以动态指定基于每个连接信任的一组证书,而无需修改 Java 虚拟机 (JVM) 环境的全局设置。

添加了对表值参数中的 datetime/smallDatetime 的支持

当使用的是表值参数 (TVP) 时,驱动程序现在支持数据类型 datetimesmallDatetime

添加了对 sql_variant 数据类型的支持

JDBC 驱动程序现在支持要用于 SQL Server 的 sql_variant 数据类型。 TVP 和大容量复制等功能也支持 sql_variant 数据类型,但具有以下限制:

  • 对于日期值

    当使用 TVP 填充包含存储在 sql_variant 列中的 datetimesmalldatetimedate 值的表时,对结果集调用 getDateTime()getSmallDateTime()getDate() 方法不起作用并引发以下异常:

    java java.lang.String cannot be cast to java.sql.Timestamp

    作为一种解决办法,可改为使用 getString()getObject() 方法。

  • 对 null 值结合使用 TVP 和 sql_variant

    如果使用 TVP 填充一个表,并将 NULL 值发送给 sql_variant 列类型,则会引发异常。 当前不支持将 NULL 值插入 TVP 中的列类型 sql_variant

实现了预处理语句元数据缓存

JDBC 驱动程序已实现预处理语句元数据缓存以改进性能。 现在驱动程序支持使用 disableStatementPoolingstatementPoolingCacheSize 连接属性缓存驱动程序中的预处理语句元数据。 默认情况下,该功能被禁用。 有关详细信息,请参阅 JDBC 驱动程序的预处理语句元数据缓存

Linux/macOS 现已开始支持 Azure AD 集成身份验证

JDBC 驱动程序现在支持,在所有受支持的操作系统(Windows、Linux 和 macOS)上结合使用 Azure Active Directory (Azure AD) 集成身份验证和 Kerberos。 或者,在 Windows 操作系统上,用户可以使用 mssql-jdbc_auth-<version>-<arch>.dll 进行身份验证。

更新了“用于 Java 的 Microsoft Azure Active Directory 身份验证库 (ADAL4J)”版本:1.4.0

JDBC 驱动程序已将“用于 Java 的 Microsoft Azure Active Directory 身份验证库 (ADAL4J)”上的 Maven 依赖项更新为版本 1.4.0。 有关依赖项的详细信息,请参阅 Microsoft JDBC Driver for SQL Server 的功能依赖项

6.2

下载 Microsoft JDBC Driver 6.2 for SQL Server (self-extracting exe)
下载 Microsoft JDBC Driver 6.2 for SQL Server (tar.gz)

版本号:6.2.2
发布日期:2017 年 9 月 29 日

如果你需要下载非所检测到的语言的驱动程序,则可使用以下直接链接。
对于 self-extracting exe 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语
对于 tar.gz 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语

Microsoft JDBC Driver 6.2 for SQL Server 完全符合 JDBC 规范 4.1 和 4.2。 根据 Java 版本兼容性命名 6.2 包中的 jar。 例如,建议将 6.2 包中的 mssql-jdbc-6.2.2.jre8.jar 文件与 Java 8 配合使用。

6.2 版本

版本号:6.2.2
发布日期:2017 年 10 月 3 日
已解决的问题:

  • 已将 ADAL4J 依赖项更新到版本 1.2.0,并将 Azure Key Vault 依赖项更新到版本 1.0.0

版本号:6.2.1
发布日期:2017 年 7 月 14 日
已解决的问题:

  • 修正使用 preparedStatement 运行没有参数的查询时的问题

版本号:6.2.0
发布日期:2017 年 6 月 30 日

注意

在 2017 年 6 月 29 日发布的 JDBC 6.2 RTW 中发现了元数据缓存改进方面的问题。 改进已回滚,并且新的 jar(版本 6.2.1)已于 2017 年 7 月 17 日发布。

另一个改进已将 Azure Key Vault 依赖库版本升级到 1.0.0,并且新的 jar(版本 6.2.2)已于 2017 年 10 月 19 日发布。

通过上述链接、GitHubMaven Central 下载 JDBC Driver 6.2 的最新更新。 请更新项目以使用 6.2.2 版本 jar。 有关详细信息,请查看 6.2.16.2.2 的发行说明。

适用于 Linux 的 Azure AD 支持

通过用户名/密码和访问令牌方法使用 Azure AD 身份验证将 Linux 应用程序连接到 Azure SQL 数据库。

已启用 FIPS 的 JVM

JDBC 驱动程序现可在以符合美国联邦信息处理标准 (FIPS) 140 的模式运行的 JVM 上使用,以符合联邦标准。

Kerberos 身份验证改进

JDBC 驱动程序现在具有以下支持:

  • Kerberos 配置无法修改或无法检索新令牌或 keytab 的应用程序的主体/密码方法。 此方法可用于对仅允许 Kerberos 身份验证的 SQL Server 实例进行身份验证。
  • 跨领域身份验证,方法是使用 Kerberos 集成身份验证,而无需明确设置服务器 SPN。 驱动程序现在会自动计算领域,即使未提供领域也是如此。
  • Kerberos 约束委派,方法是通过数据源接受被模拟用户凭据作为 GSS 凭据对象。 然后,此模拟凭据用于建立 Kerberos 连接。

添加了超时

JDBC 驱动程序现在支持以下可配置超时。 可以根据应用程序的需要进行更改。

  • Query timeout 用于控制在运行查询时发生超时之前等待的秒数。
  • Socket timeout 用于指定在读取或接受套接字时发生超时之前等待的毫秒数。

6.1

版本号:6.1.0
发布日期:2016 年 11 月 17 日

Microsoft JDBC Driver 6.1 for SQL Server 完全符合 JDBC 规范 4.1 和 4.2。 此版本是 JDBC 驱动程序的初始开源版本。 可在 GitHub v6.1.0 标记 中找到源代码。 其中生成了 mssql-jdbc-6.1.0.jre8.jar 和 mssql-jdbc-6.1.0.jre7.jar 文件,它们对应于 Java 版本兼容性。

6.0

下载 Microsoft JDBC Driver 6.0 for SQL Server (self-extracting exe)
下载 Microsoft JDBC Driver 6.0 for SQL Server (tar.gz)

版本号:6.0.8112
发布日期:2017 年 1 月 17 日

如果你需要下载非所检测到的语言的驱动程序,则可使用以下直接链接。
对于 self-extracting exe 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语
对于 tar.gz 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语

Microsoft JDBC Driver 6.0 for SQL Server 完全符合 JDBC 规范 4.1 和 4.2。 根据 JDBC API 版本兼容性命名 6.0 包中的 jar。 例如,6.0 包中的 sqljdbc42.jar 文件符合 JDBC API 4.2。 同样,sqljdbc41.jar 文件符合 JDBC API 4.1。

若要确保 sqljdbc42.jar 或 sqljdbc41.jar 文件正确,请运行以下代码行。 如果输出为“驱动程序版本:6.0.7507.100”,则具有 JDBC 驱动程序 6.0 包。

Connection conn = DriverManager.getConnection("jdbc:sqlserver://<server>;encrypt=true;user=<user>;password=<password>;");
System.out.println("Driver version: " + conn.getMetaData().getDriverVersion());

Always Encrypted

驱动程序支持 SQL Server 2016 中的 Always Encrypted 功能。 此功能可确保从不在 SQL Server 实例中以纯文本形式显示敏感数据。 Always Encrypted 工作方式是,以透明方式加密应用程序中的数据,这样 SQL Server 就只会处理已加密数据,而不会处理纯文本值。 即使 SQL Server 实例或主机计算机遭入侵,攻击者也只能获得敏感数据的已加密文本。 有关详细信息,请参阅对 JDBC 驱动程序使用 Always Encrypted

国际化域名

驱动程序支持服务器名称的国际化域名 (IDN)。 有关详细信息,请参阅 JDBC 驱动程序的国际功能一文中的“使用国际域名”。

参数化查询

驱动程序现在支持,使用已准备的语句为复杂查询(如子查询和/或联接)检索参数元数据。 此改进仅对 SQL Server 2012 及更高版本有效。

Azure Active Directory

Azure AD 身份验证是一种使用 Azure AD 中的标识连接到 Azure SQL 数据库的机制。 Azure AD 身份验证可用于集中管理数据库用户的标识,并替代 SQL Server 身份验证。

可使用 JDBC Driver 6.0 指定 JDBC 连接字符串中的 Azure AD 凭据以连接到 Azure SQL 数据库。 有关详细信息,请参阅设置连接属性一文中的身份验证属性。

表值参数

借助 TVP,可以将多行数据从客户端应用程序轻松封送到 SQL Server,而无需进行多次往返或使用特殊的服务器端逻辑来处理数据。 可使用 TVP 来封装客户端应用程序中的数据行,并以一个参数化命令的形式将数据发送到服务器。 传入数据行将存储在随后可使用 Transact-SQL 对其进行操作的表变量中。 有关详细信息,请参阅使用表值参数

AlwaysOn 可用性组

驱动程序现在支持透明连接到 AlwaysOn 可用性组。 驱动程序快速发现服务器基础结构的当前 AlwaysOn 拓扑,并以透明方式连接到当前的活动服务器。

4.2

下载 Microsoft JDBC Driver 4.2 for SQL Server (self-extracting exe)
下载 Microsoft JDBC Driver 4.2 for SQL Server (tar.gz)

版本号:4.2.8112
发布日期:2015 年 8 月 24 日

如果你需要下载非所检测到的语言的驱动程序,则可使用以下直接链接。
对于 self-extracting exe 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语
对于 tar.gz 文件中的驱动程序:中文(简体) | 中文(繁体) | 英语(美国) | 法语 | 德语 | 意大利语 | 日语 | 朝鲜语 | 葡萄牙语(巴西) | 俄语 | 西班牙语

Microsoft JDBC Driver 4.2 for SQL Server 完全符合 JDBC 规范 4.1 和 4.2。 根据 JDBC API 版本兼容性命名 4.2 包中的 jar。 例如,4.2 包中的 sqljdbc42.jar 文件符合 JDBC API 4.2。 同样,sqljdbc41.jar 文件符合 JDBC API 4.1。

若要确保 sqljdbc42.jar 或 sqljdbc41.jar 文件正确,请运行以下代码行。 如果输出为“驱动程序版本:4.2.6420.100”,则具有 JDBC 驱动程序 4.2 包。

Connection conn = DriverManager.getConnection("jdbc:sqlserver://<server>;encrypt=true;user=<user>;password=<password>;");
System.out.println("Driver version: " + conn.getMetaData().getDriverVersion());

对 JDK 8 的支持

除了支持 JDK 7.0、6.0 和 5.0 以外,驱动程序还支持 JDK 版本 8.0。

JDBC 4.1 和 4.2 的遵从性

除了支持 4.0 以外,驱动程序还支持 Java Database Connectivity API 4.1 和 4.2 规范。 有关详细信息,请参阅 JDBC 驱动程序的 JDBC 4.1 符合性JDBC 驱动程序的 JDBC 4.2 符合性

大容量复制

大容量复制功能可用于将大量数据快速复制到 SQL Server 数据库中的表或视图。 有关详细信息,请参阅结合使用大容量复制和 JDBC Driver

XA 事务回滚选项

驱动程序新增了适用于未准备好事务的现有自动回滚的超时选项。 有关详细信息,请参阅了解 XA 事务

新 Kerberos 主体连接属性

驱动程序使用新连接属性,提高 Kerberos 连接灵活性。 有关详细信息,请参阅使用 Kerberos 集成身份验证连接到 SQL Server

4.1

版本号:4.1.8112
发布日期:2014 年 12 月 12 日

支持 JDK 7

除了支持 JDK 6.0 和 5.0 以外,驱动程序还支持 JDK 版本 7.0。

JDBC Driver 应用程序不支持 Itanium

Itanium 计算机不支持 Microsoft JDBC Driver for SQL Server。

另请参阅

JDBC 驱动程序的概述