Blog Post

SQL Server Blog
5 MIN READ

Announcing the General Availability of Microsoft JDBC Driver 13.4 for SQL Server

DavidLevy's avatar
DavidLevy
Icon for Microsoft rankMicrosoft
Mar 18, 2026

We are excited to announce the General Availability (GA) of Microsoft JDBC Driver 13.4 for SQL Server. This release incorporates all improvements delivered across the 13.3.x preview cycle (13.3.0, 13.3.1, and 13.3.2) and represents a significant step forward in performance observability, AI/vector workload readiness, SQL Server 2025 compatibility, and security posture.

You can download the driver from Maven CentralMicrosoft Learn, or from GitHub Releases. As with previous releases, two JAR variants are available: jre8 for Java 8 and jre11 for Java 11 and above.

Highlights

Vector (FLOAT16) Subtype Support

Building on the native VECTOR data type support introduced earlier, version 13.4 adds FLOAT16 subtype support with full IEEE-754 compliant serialization and deserialization between Java Float[] and the half-precision wire format. This enables efficient float16 vector storage and transmission for AI, embeddings, and vector search workloads—reducing memory footprint and network payload without changing the Java programming model.

Performance Logger: Connection and Statement-Level Metrics

A new performance logging framework gives developers and operators visibility into driver-level latencies. In 13.4, the logger covers:

  • Connection metrics: prelogin, login, and token acquisition timing via the com.microsoft.sqlserver.jdbc.PerformanceMetrics.Connection logger.
  • Statement metrics: granular execution phases including REQUEST_BUILD, FIRST_SERVER_RESPONSE, PREPARE, PREPEXEC, and EXECUTE for both Statement and PreparedStatement.

An extensible callback infrastructure is included for custom telemetry integration.

New prepareMethod Options

Two new prepareMethod connection property values provide fine-grained control over how the driver executes prepared statements:

  • prepareMethod=none — Forces literal parameter substitution with SQL batch execution, bypassing server-side prepared statement handles (sp_prepexec / sp_prepare). Only recommended for applications that require Sybase-style compatibility with DYNAMIC_PREPARE=false behavior.
  • prepareMethod=scopeTempTablesToConnection — This option applies the prepareMethod=none behavior only to prepared statements with references to temporary table creation. This behavior ensures temporary tables created by a prepared statement persist on the connection after the prepared statement finishes. Other prepared statements will use prepareMethod=prepexec behavior. This option is only recommended for existing applications that require this temporary table behavior.

Both options leave the default behavior unchanged.

ADAL Removed - Entra (Azure Active Directory) Integrated Authentication Modernized

The legacy ADAL dependency (`adalsql.dll`/`adal.dll`) has been fully removed. Entra ID Integrated Authentication (`Authentication=ActiveDirectoryIntegrated`) now uses mssql-auth.dll, a component installed by the latest Microsoft ODBC Driver 18 for SQL Server and Microsoft OLE DB Driver 19 for SQL Server.

Java 25 (LTS) Support

Official support for Java 25 (LTS) has been added, while non-LTS Java versions 22–24 have been removed from build configurations. This simplifies maintenance and ensures the driver is tested against the Java versions that matter most for production workloads.

SQL Server 2025 Readiness

DatabaseMetaData.getColumns() now prefers sp_columns_170 on SQL Server 2025 for accurate metadata on newer types such as VECTOR and enhanced JSON, with automatic fallback to sp_columns_100 for older versions. Combined with expanded test coverage, the driver is fully validated against SQL Server 2025.

Security Updates

Transitive dependencies have been upgraded to address multiple CVEs:

  • azure-identity → 1.18.2
  • msal4j → 1.23.1
  • Netty → 4.1.130.Final
  • Reactor Netty → 1.2.13
  • Nimbus JOSE JWT → 10.0.1

These updates resolve CVE-2025-59250, CVE-2025-67735, CVE-2025-53864, CVE-2025-58056, CVE-2025-58057, CVE-2025-55163, CVE-2025-24970, CVE-2025-22227, and CVE-2025-25193, with no breaking API changes.

Additionally, RFC 5280–compliant IP address validation has been added to SSL certificate SAN checks, removing the need for hostname workarounds when connecting via IP over TLS.

Bug Fixes

Version 13.4 includes a substantial number of stability and correctness fixes accumulated across the preview cycle:

AreaFix
Cross-database stored proceduressp_sproc_columns is now fully qualified with database.sys, fixing metadata lookup failures with named parameters across databases and eliminating schema name-squatting risks.
Nested stored procedure errorsMultiple nested RAISERROR calls now surface correctly via SQLException.getNextException() through lazy exception chaining.
Geography parsingScientific notation in coordinates (e.g., negative exponents in WKT) no longer causes NumberFormatException.
Bulk copy: SQL functionsAutomatic fallback to standard batch execution when SQL functions like len(?) are used with useBulkCopyForBatchInsert.
Bulk copy: computed columnsDestination column validation now correctly ignores computed persisted columns, preventing false "invalid column mapping" errors.
Bulk copy: InputStreamsetBinaryStream() now works correctly with Bulk Copy for Batch Insert into VARBINARY(MAX) columns.
Bulk copy: isolated quotesTab-delimited data with isolated quotes no longer causes IndexOutOfBoundsException.
getIndexInfo() collationCollation conflicts in mixed-collation environments are resolved by applying COLLATE DATABASE_DEFAULT consistently.
getSchemas() catalogBuilt-in schemas (dbo, sys, etc.) now return correct TABLE_CATALOG values instead of NULL.
Statement.execute() update countsValid update counts are no longer silently lost after an error in mixed batch execution.
PreparedStatement update countsAccurate counts are now returned for multi-value INSERT statements with triggers.
Fatal error handlingTDS DONE tokens with fatal severity (25+) are properly detected and propagated, preventing silent failures.
TVP metadatagetParameterMetaData() no longer crashes when called on statements using Table-Valued Parameters.
supportsIntegrityEnhancementFacilityNow correctly returns true, reflecting SQL Server's full constraint support.
Azure Synapse serverlessgetIndexInfo() falls back to sys.indexes when sp_statistics is unavailable.

Testing and Quality Improvements

This release reflects a significant investment in test infrastructure and coverage:

  • State-machine testing framework — A lightweight, seed-reproducible framework for randomized JDBC state exploration in JUnit 5, improving edge-case detection with reproducible failures.
  • Migrated FX regression tests — 37 legacy regression scenarios covering statement execution, ResultSet behavior, batching, cursors, and transaction flows have been migrated to JUnit with full behavioral parity.
  • Expanded unit test coverage — Key components including SQLServerCallableStatement, SQLServerDatabaseMetaData, SQLServerPreparedStatement, and SQLServerResultSet now have greater test coverage.
  • Mockito integration — Added as a test dependency for better unit test isolation and control.
  • AI-assisted development context — ARCHITECTURE.md, GLOSSARY.md, and PATTERNS.md have been added to guide contributors using AI coding assistants.

Getting Started

Maven:

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>13.4.0.jre11</version>
</dependency>

Gradle:

implementation 'com.microsoft.sqlserver:mssql-jdbc:13.4.0.jre11'

Replace jre11 with jre8 if you are on Java 8.

Breaking Changes

There are no breaking API changes in this release. The removal of the ADAL dependency for Entra ID Integrated Authentication is transparent. The only difference from previous releases is `Authentication=ActiveDirectoryIntegrated` now has a requirement that the latest Microsoft ODBC Driver 18 for SQL Server or Microsoft OLE DB Driver 19 for SQL Server be installed.

Feedback

We value your input. Please report issues or feature requests on our GitHub Issues page and take our survey to let us know how we're doing.

Thank you to all the contributors and community members who helped shape this release!

— The Microsoft JDBC Driver for SQL Server Team

Updated Mar 18, 2026
Version 4.0
No CommentsBe the first to comment