Release Notes – JDBC Driver for SQL Server解説|Azure SQLの変更点と確認ポイント

Azure SQLにJavaアプリケーションから接続している場合、「Release Notes – JDBC Driver for SQL Server」で最初に確認すべきことは、単なるバージョン番号ではありません。結論から言うと、影響が出やすいのは、JDKとの組み合わせ、mssql-jdbcの依存関係、Microsoft Entra ID認証、TLS証明書検証、PreparedStatementの実行方式、VECTOR/JSONなど新しいデータ型、Bulk Copyやメタデータ取得処理です。

特に本番環境では、最新GA版を前提に検証し、Preview版は限定的な検証用途に分けて扱うのが安全です。Microsoft Learnのリリースノートでは、Microsoft JDBC Driver for SQL Serverの各リリースと変更点がバージョンごとに整理されており、13.4.0は2026年3月13日リリース、JDK 25を含む複数のJavaバージョンに対応するリリースとして案内されています。(Microsoft Learn)

目次

Release Notes – JDBC Driver for SQL Serverで確認すべきこと

Release Notes – JDBC Driver for SQL Serverは、SQL ServerやAzure SQLへ接続するJavaアプリケーション向けのJDBCドライバー更新情報です。Azure SQL Database側に直接インストールするものではなく、アプリケーション、バッチ、ETL、APIサーバー、アプリケーションサーバー、コンテナイメージなどに含めるクライアントライブラリの変更として扱います。

Azure SQLの運用で重要なのは、「ドライバーを上げるかどうか」だけでなく、更新によって接続・認証・暗号化・データ型の扱い・例外処理・性能計測の見え方が変わる可能性を先に洗い出すことです。Microsoftのサポートマトリクスでは、現在サポートされるJDBC DriverはAzure SQL Database、Azure SQL Managed Instance、Azure Synapse Analyticsなども対象に含まれると説明されています。(Microsoft Learn)

今回の中心は13.4 GA、Previewは本番採用と分けて考える

Microsoft Learnのダウンロードページでは、Microsoft JDBC Driver 13.4.0 for SQL Serverが最新の一般提供、つまりGA版として案内されています。Java 8、11、17、21、25がサポート対象で、Mavenで利用する場合の依存関係例も示されています。(Microsoft Learn)

一方、GitHubの公式リポジトリには13.5.0 Preview Releaseも公開されています。13.5 Previewには、Azure SQL HyperscaleのReader Endpoint向け拡張ルーティング、JDK 26サポート、defaultTransactionIsolation接続プロパティなどが含まれますが、Previewであるため、本番環境へ無条件に適用する更新とは分けて考えるべきです。(GitHub)

区分実務上の扱い判断基準
13.4.0 GA本番更新候補通常のアップデート検証、セキュリティ・互換性確認の対象
13.5.0 Preview先行検証候補Hyperscale Reader EndpointやJDK 26など、該当機能を早期検証したい場合
旧バージョン継続利用または更新計画の対象サポート期限、脆弱性対応、JDK対応、接続エラーの有無で判断

本番環境では「Previewに新機能があるからすぐ上げる」のではなく、まず13.4 GAで既存アプリケーションの互換性とセキュリティ更新を確認し、Previewは検証環境で個別に評価する進め方が現実的です。

Azure SQL利用者に関係する主な変更点

13.4で目立つ変更は、AI/ベクター検索系のデータ型対応、PreparedStatementまわりの実行方式、性能ロギング、Entra ID統合認証、依存ライブラリ更新、メタデータ取得の改善です。公式リリースノートでは、VECTOR(FLOAT16)サブタイプ、prepareMethodの新オプション、パフォーマンスロガー、ADAL依存関係の削除、DatabaseMetaData.getColumns()の改善、CVE対応のための依存関係更新などが挙げられています。(Microsoft Learn)

変更点内容影響を受けやすいケース
JDK 25サポート13.4でJDK 25が正式サポート対象に追加Javaランタイムを更新する企業システム、長期運用アプリ
VECTOR(FLOAT16)対応半精度ベクター型を扱えるようになった生成AI、埋め込み検索、類似検索、AI検索基盤
prepareMethodの拡張scopeTempTablesToConnectionnoneが追加一時テーブルを使うPreparedStatement、移行互換性対応
パフォーマンスロガー接続、ログイン、トークン取得、ステートメント実行の計測が拡張遅延調査、SRE、性能劣化の原因分析
ADAL依存の削除Entra ID統合認証で古いADALフローから移行Windows統合認証、Entra ID認証を使う社内アプリ
依存ライブラリ更新azure-identitymsal4jなどを更新脆弱性スキャン、SBOM、依存関係ロックを使う環境
メタデータ取得改善新しい型に対応したgetColumns()getIndexInfo()などの修正ORM、マイグレーションツール、スキーマ自動解析
Bulk Copy関連修正SQL関数、計算列、InputStream、CSVなどの扱いを改善大量投入バッチ、ETL、データ移行処理

影響範囲を見極めるポイント

通常のCRUD処理だけを行うJavaアプリでは、ドライバー更新の影響は限定的な場合があります。ただし、次の条件に当てはまる場合は、単体テストだけでなくAzure SQLに接続した結合テストまで行うべきです。

該当する構成・処理確認すべき内容失敗しやすいポイント
Entra ID認証を使っているauthentication設定、ネイティブDLL、依存ライブラリローカルでは成功し、本番Windowsサービスやコンテナで失敗する
接続文字列にTLS関連設定があるencrypttrustServerCertificate、証明書名証明書名と接続先ホスト名の不一致
PreparedStatementで一時テーブルを使うprepareMethodを変更する必要があるか性能改善目的でnoneを指定し、逆にログ肥大や性能劣化を招く
Vector型を使うvectorTypeSupport、FLOAT32/FLOAT16の扱い旧アプリがJSON文字列として受け取る前提のままになっている
Bulk CopyやバッチINSERTを使う計算列、SQL関数、VARBINARY(MAX)、CSV取込本番データだけで列定義や文字列サイズの問題が出る
ORMやマイグレーションツールを使うDatabaseMetaDataの戻り値メタデータの修正により、生成SQLや差分判定が変わる

ポイントは、Azure SQLのデータベース本体よりも、アプリケーション側の接続方法・依存関係・実行時設定に影響が出る点です。特に複数サービスが同じAzure SQLに接続している場合、サービスごとにJDBC Driverのバージョンが異なることも珍しくありません。まずは全アプリのmssql-jdbcバージョンを棚卸ししてください。

JDKとJARファイルの組み合わせを確認する

JDBC Driver for SQL Serverは、Javaのバージョン互換性に応じてJARファイル名が分かれています。13.4では、mssql-jdbc-13.4.0.jre11.jarはJava 11以上で使うJARとして説明されており、JDK 25もサポート対象に含まれます。(Microsoft Learn)

Mavenを使っている場合は、pom.xmlでバージョンを明示しているか、Spring Bootなどの依存関係管理に任せているかを確認します。

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

実務では、ソースコード上の依存関係だけでなく、実際に起動しているアプリがどのドライバーを読み込んでいるかも確認します。古いJARがアプリケーションサーバーの共有ライブラリに残っていると、pom.xmlを更新しても実行時に旧バージョンが使われることがあります。

try (Connection conn = dataSource.getConnection()) {
    DatabaseMetaData meta = conn.getMetaData();
    System.out.println(meta.getDriverName());
    System.out.println(meta.getDriverVersion());
}

この確認は、Webアプリ、バッチ、管理ツール、ETLジョブのすべてで行うのが理想です。

接続プロパティで必ず見るべき設定

JDBC Driverの更新では、接続文字列のプロパティが思わぬ差分になります。公式ドキュメントでは、接続プロパティはURL、Properties、DataSourceのsetterなど複数の方法で指定でき、重複した場合の解決順序も説明されています。設定が複数箇所に分散している環境では、意図しない値が優先されていないか確認が必要です。(Microsoft Learn)

encrypttrustServerCertificate

JDBC Driver 10.2以降では、encryptの既定値がtrueに変更されています。9.4以前からアップグレードする場合、サーバー証明書が正しく検証できないと接続エラーになる可能性があります。trustServerCertificate=trueは検証を省略する設定のため、検証環境の一時対応として使う場合でも、本番では証明書名・信頼ストア・接続先ホスト名を正しく整える方針にすべきです。(Microsoft Learn)

Azure SQLでは通常TLS接続を前提にするため、次の観点で確認します。

確認項目見るべき場所
encrypt=trueになっているかJDBC URL、環境変数、DataSource設定
trustServerCertificate=trueを安易に使っていないか本番構成、接続ライブラリ共通設定
証明書名と接続先ホスト名が一致するかPrivate Endpoint、独自DNS、プロキシ経由の接続
JVMの信頼ストアが正しいかjavax.net.ssl.trustStore、コンテナイメージ、実行ユーザー

13.4では証明書SANでのIPアドレス検証に関する修正も入っています。IPアドレスでSQL Server系サービスへTLS接続している特殊な構成では、更新後の接続確認を必ず行ってください。(Microsoft Learn)

authentication

Azure SQLでは、SQL認証だけでなくMicrosoft Entra ID認証、マネージドID、サービスプリンシパルなどを使う構成があります。接続プロパティのauthenticationには、ActiveDirectoryManagedIdentityActiveDirectoryMSIActiveDirectoryInteractiveActiveDirectoryServicePrincipalSqlPasswordなどが用意されています。ActiveDirectoryPasswordは非推奨として扱われているため、新規開発や刷新では別方式への移行を検討すべきです。(Microsoft Learn)

13.4では、Entra ID統合認証に関するADAL依存が削除され、mssql-auth.dll側へ移行されています。Windows統合認証やネイティブDLLを使う構成では、JARだけでなく実行環境に配置しているDLL、CI/CD成果物、コンテナイメージ、Windowsサービスの実行ユーザー権限まで確認しましょう。(Microsoft Learn)

prepareMethod

13.4で追加されたprepareMethod=scopeTempTablesToConnectionprepareMethod=noneは、一般的な性能改善スイッチではありません。公式ドキュメントでも、これらのオプションは互換性や移行シナリオ向けであり、サーバー側Prepared Statementを使わず、SQLがバッチとして実行され、リテラル値がトレースやログに表示される可能性があると説明されています。(Microsoft Learn)

次のように判断すると安全です。

状況推奨判断
既存アプリで問題がない既定のprepexecを維持
一時テーブルを含むPreparedStatementで互換性問題があるscopeTempTablesToConnectionを検証
サーバー側Prepared Statementを避ける明確な理由があるnoneを検証。ただし性能・ログ・メモリ影響を確認
大きな文字列、BLOB/CLOBを扱うnoneやリテラル展開系の設定は慎重に扱う

本番で突然prepareMethodを変えると、SQLの実行計画、ログ出力、メモリ使用量、エラー検出タイミングが変わる可能性があります。接続プール単位で段階的に適用し、SQL実行時間と例外ログを比較してください。

VECTOR(FLOAT16)対応はAI検索系のAzure SQL利用者に重要

13.4では、VECTOR(FLOAT16)サブタイプのサポートが追加されています。Microsoft Learnのベクター型ドキュメントでは、JDBC Driver 13.2.0以降でベクター型をサポートし、13.4.0以降ではvector(float16)サブタイプもサポートすると説明されています。(Microsoft Learn)

FLOAT16は、埋め込みベクトルを扱うAI検索や類似検索でメモリ・ストレージ・通信量を抑えたい場合に有効です。ただし、ドライバーだけを更新しても十分ではありません。アプリケーションがmicrosoft.sql.Vectorとして扱うのか、旧来のJSON文字列として扱うのかを決める必要があります。

vectorTypeSupport接続プロパティでは、offv1v2を指定できます。13.4以降でv2を指定すると、FLOAT32とFLOAT16のネイティブベクター型サポートが有効になり、FLOAT16はJavaのFloat[]配列として公開されます。(Microsoft Learn)

設定意味使いどころ
offベクター型をJSON形式の文字列として扱う旧アプリの互換性を優先する場合
v1FLOAT32ベクターをネイティブに扱う13.2以降の標準的なベクター利用
v2FLOAT32/FLOAT16をネイティブに扱う13.4以降でFLOAT16を使うAI/MLワークロード

既存アプリが「ベクター列は文字列で返る」という前提で実装されている場合、ドライバー更新後に型の扱いで不具合が出る可能性があります。更新前に、検索API、バッチ登録、CSV取込、TVP、Bulk Copyまで含めてテストしてください。

Bulk Copyとメタデータ取得を使う処理は結合テストが必須

13.4では、Bulk CopyやバッチINSERTに関する修正が複数入っています。SQL関数を含むバッチ挿入で標準バッチ実行へフォールバックする修正、永続化された計算列を持つテーブルへのBulk Copy、InputStreamによるVARBINARY(MAX)列への挿入、CSVの区切り文字や引用符まわりの修正などです。(Microsoft Learn)

これらは「修正」ではありますが、実務では既存処理の挙動が変わったように見えることがあります。特にETLや移行バッチでは、以下を本番相当データで確認してください。

テスト観点具体例
計算列のあるテーブル登録対象列のマッピングが意図通りか
大きなバイナリsetBinaryStream()でメモリ使用量が増えないか
CSV取込区切り文字、引用符、タブ区切りデータを正しく読めるか
SQL関数を含むINSERTBulk Copyから通常バッチへのフォールバックで性能が許容範囲か
トリガー付きINSERT更新件数、生成キー、例外処理が既存期待値と合うか

ORM、スキーマ差分ツール、マイグレーションツールを使う環境では、DatabaseMetaData.getColumns()getIndexInfo()の改善も見逃せません。13.4では、新しい型に対応したメタデータ取得や照合順序競合の修正が入っているため、自動生成されるSQLやスキーマ差分の結果が変わらないか確認しましょう。(Microsoft Learn)

管理者・開発者向けの更新手順

Azure SQLに接続するJavaアプリでJDBC Driverを更新する場合は、次の順番で進めると失敗を減らせます。

手順実施内容完了条件
棚卸し全アプリのmssql-jdbcバージョン、JDK、接続方式を確認実行時のドライバー版本まで確認済み
影響分類Entra ID、TLS、Vector、Bulk Copy、メタデータ利用の有無を整理影響大・中・小に分類済み
検証環境で更新13.4 GAへ更新してAzure SQLに接続ログイン、CRUD、バッチ、障害時挙動を確認済み
接続設定確認encrypttrustServerCertificateauthenticationprepareMethodを確認本番値と検証値の差分が説明できる
性能比較主要SQL、Bulk Copy、起動時接続、トークン取得時間を比較許容範囲または対策済み
段階展開一部サービス・一部インスタンスからリリースロールバック手順が用意済み
監視例外、接続失敗、認証失敗、SQL遅延を監視更新前後の差分を追跡可能

更新時に最も避けたいのは、全サービスのドライバーを一斉に上げることです。Azure SQL側のスキーマを変更していなくても、アプリケーション側のドライバー更新だけで認証、TLS、メタデータ取得、バッチ処理の動きが変わることがあります。

サポート期限とセキュリティの観点でも確認する

JDBC Driverの更新は、新機能のためだけではありません。サポートマトリクスでは、JDBC Driverは固定ライフサイクルポリシーに従い、メジャーバージョンごとに少なくとも5年のメインストリームサポートが提供されると説明されています。また、13系では13.4が現行版として示され、13.2にはアップグレード期限が設定されています。(Microsoft Learn)

さらに、依存関係の脆弱性対応では、ドライバーのMavenパッケージ定義に外部依存関係が含まれ、既知の脆弱性がある依存関係はサポート対象バージョンのHotfixで更新される場合があります。ただし、互換性上ドライバー側で更新できない場合は、アプリケーション側で依存関係の衝突を管理する必要があるとされています。(Microsoft Learn)

そのため、次の運用を入れておくと安全です。

  • mssql-jdbcのバージョンをアプリごとに一覧化する
  • Maven/GradleのロックファイルやSBOMを更新する
  • azure-identitymsal4jなどの推移的依存関係を脆弱性スキャンで確認する
  • 古いアプリケーションサーバー共有ライブラリに旧JARが残っていないか確認する
  • サポート終了済みのJDBC Driverを使っているアプリは更新計画に入れる

13.5 Previewを検証するべきケース

13.5 Previewは、すべてのAzure SQL利用者がすぐに検証すべきものではありません。優先度が高いのは、Azure SQL HyperscaleのReader Endpointを使った読み取り分散、JDK 26への先行対応、接続時のトランザクション分離レベル指定を検証したいチームです。GitHubのPreview Releaseでは、Hyperscale Reader Endpoint向けの拡張ルーティング、JDK 26、defaultTransactionIsolation接続プロパティが追加点として示されています。(GitHub)

ただし、Previewは検証環境で使うものです。本番導入の判断材料にする場合でも、以下を明確に分けてください。

判断項目13.4 GA13.5 Preview
本番適用候補になる原則として慎重に扱う
機能検証通常の更新検証新機能の先行検証
障害時対応既存の本番運用に乗せやすい切り戻し前提で検証
対象チームJavaアプリ全般Hyperscale、JDK 26、接続制御を検証するチーム

Preview版でしか解決しない課題がない限り、まず13.4 GAへの更新計画を立てるのが現実的です。

まとめ:まずはバージョン棚卸しと接続テストから始める

Azure SQLでRelease Notes – JDBC Driver for SQL Serverを確認する目的は、「新機能を知ること」だけではありません。実務では、Javaランタイム、JAR、接続文字列、Entra ID認証、TLS証明書、Bulk Copy、Vector型、ORMのメタデータ取得まで含めて、アプリケーションの接続品質を維持するために読むものです。

次に取るべき行動は明確です。まず、全アプリケーションで実行時のmssql-jdbcバージョンを確認します。次に、13.4 GAを基準に検証環境で接続・認証・主要SQL・Bulk Copy・メタデータ取得をテストします。Vector、Hyperscale Reader Endpoint、JDK 26などの新機能を使う予定がある場合だけ、Preview版の検証を別枠で進めてください。

ドライバー更新は小さな作業に見えますが、Azure SQLに接続するすべてのJavaアプリの土台に関わります。リリースノートを「読むだけ」で終わらせず、依存関係、接続設定、展開手順、ロールバック方法まで確認してから本番へ進めることが、最も確実な運用です。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次