スポンサーリンク
SQL Server

気づいたら System.Data.SqlClient がメンテナンスモードになっていた

SQL Server
この記事は約4分で読めます。

― SQL Server 2017 を使っている私が、2022 時代の“ドライバの現実”に向き合った記録 ―

私は現在、SQL Server 2017 を使ったシステムを運用しています。 アプリケーション側は .NET Framework(VB.NET)で、接続ドライバは長年おなじみの System.Data.SqlClient を利用してきました。

特に不満もなく、安定して動いているので「このままでいいだろう」と思っていたのですが、 SQL Server 2022 への移行を検討し始めたタイミングで、ある事実に気づきました。

System.Data.SqlClient は、すでにメンテナンスモードになっていたのです。

この記事では、なぜそうなったのか、そして今後どうすべきなのかを整理していきます。

■ System.Data.SqlClient は静かにメンテナンスモードへ

Microsoft は公式に次の方針を示しています。

  • System.Data.SqlClient:新機能は追加されず、バグ修正のみ
  • Microsoft.Data.SqlClient:SQL Server / Azure SQL の新機能はすべてこちらに実装

つまり、SQL Server が進化しても、System.Data.SqlClient は追従しません。 長年使ってきた“標準ドライバ”が、気づかないうちに世代交代していたわけです。

■ なぜ Microsoft.Data.SqlClient に分離されたのか

背景には、SQL Server と Azure SQL の急速な進化があります。

  • Entra ID(旧 AAD)認証の刷新
  • Always Encrypted with secure enclaves
  • 新しい暗号化ポリシー(TDS 8.0)
  • UTF-8 対応
  • Azure SQL / Arc-enabled SQL との統合

これらは .NET Framework の枠内では対応が難しく、 SQL Server チームは独立した NuGet パッケージとして Microsoft.Data.SqlClient を開発する方向に舵を切りました。

■ SQL Server 2022 以降では、実質的に Microsoft.Data.SqlClient が前提

SQL Server 2022 の新機能は、ほぼすべて Microsoft.Data.SqlClient が前提になっています。

● Always Encrypted の強化

System.Data.SqlClient では対応が不完全です。

● 新しい暗号化ポリシー(TDS 8.0)

通信プロトコルの更新は新ドライバが必須です。

● Entra ID(旧 AAD)認証

System.Data.SqlClient は古い ADAL ベースで、今後の更新に追従できません。

● Azure SQL との統合

クラウド連携は新ドライバが前提です。

SQL Server 2022 を本格的に使うなら、 System.Data.SqlClient のままでは確実に制約が出てきます。

■ 書き換えは難しいのか

多くの開発者が気になるポイントだと思います。

● コードの書き換え自体は簡単

名前空間を変更するだけで動くケースが多いです。

Imports Microsoft.Data.SqlClient

● しかし“挙動差の検証”が難しい

ここが本質です。

  • 接続文字列のデフォルトが変わる
  • 暗号化設定が厳格化される
  • 認証方式の挙動が異なる
  • 接続プールの動作が変わる
  • Always Encrypted の設定が増える
  • MARS の挙動差がある

特に 接続まわりと認証まわりは要検証 です。

■ SQL Server 2017 → 2022 の移行で見えてくる“ドライバの壁”

SQL Server 2017 までは System.Data.SqlClient で何も困りませんでした。 しかし 2022 になると、次のような問題が出てきます。

  • 新しい暗号化ポリシーに対応できない
  • Entra ID 認証がうまく動かない
  • Azure SQL との接続で警告が出る
  • Always Encrypted の新機能が使えない

つまり、SQL Server の進化にアプリ側が追従できなくなるのです。

■ 結論:SQL Server 2022 以降を使うなら、移行は避けられない

まとめると次のようになります。

  • System.Data.SqlClient は事実上“現状維持”
  • SQL Server 2022 の新機能は Microsoft.Data.SqlClient が前提
  • 認証・暗号化・クラウド連携は新ドライバ必須
  • 書き換えは簡単だが、検証が難しい
  • SQL Server2022 以降を使うなら、最終的には移行が必要

つまり、

「いつかやる」ではなく「必ずやる」。 そのタイミングをどう最適化するかがポイントです。

コメント

タイトルとURLをコピーしました