SQL Server の最新の機能を使用するためには、System.Data.SqlClient ではなく、Microsoft.Data.SqlClient を使用する必要があります。
以前、PowerShell (7.0.2) で Microsoft.Data.SqlClient 2.0 を使用する という投稿を書いたのですが、Windows PowerShell を使用していて、もう少しシンプルな方法で導入することはできないかと考えてみたところ、SQL Server PowerShell モジュール の存在を思い出しました。
2023/04/06 追記
Microsoft.Data.SqlClient が使用されている 22.x が GA リリースされました。
I'm pleased to announce the GA release of the SQLServer PowerShell module v22.https://t.co/hXJuyq2Xqh
— Matteo Taveggia (@matteo_taveggia) April 4, 2023
22.0.59 以降で Preview が外れましたので、現時点では GA 版を使用することができます。
PowerShell の SQL Server モジュールについては、https://www.powershellgallery.com/packages/SqlServer/ で PowerShell Gallery で公開が行われています。
投稿を書いている時点では、21.1.18256 が GA されているバージョンとなるのですが、このバージョンについては 2021/07/14 にリリースされたものとなり、かなり古いバージョンとなり、このバージョンでは、System.Data.SqlClient が使用されています。
現状は Preview なのですが、22.0.49-preview になると、Microsoft.Data.SqlClient が使用されており (正確には 22.0.20-preview 以降)、このバージョンのモジュールをインストールすることで簡単に Microsoft.Data.SqlClient が使用できるようになります。
今回は Windows Server 2022 を使用しているのですが、Windows Server 2022 で使用されているパッケージ管理用のモジュールについては次のバージョンがしよす有れています。
今回はプレビューのモジュールをインストールするのですが、「Install-Module コマンドレット」のオプションである「-AllowPrerelease」については、導入されている PowerShellGet のバージョンである 1.0.0.1 では使用することはできません。
これについては、Windows への PowerShellGet のインストール でも記載されています。
Windows PowerShell 5.1 には、バージョン 1.0.0.1 の PowerShellGet がプレインストールされています。 このバージョンの PowerShellGet には、制限されている機能があり、PowerShell ギャラリーの更新された機能はサポートされていません。 サポートするには、最新バージョンに更新する必要があります。
最初に PowerShellGet をアップデートする必要がありますので、PowerShellGet の最新モジュールをインストールします。
Install-Module PowerShellGet -Force -AllowClobber
モジュールのインストールが完了したら、一度 PowerShell 再起動し、次のコマンドを実行して、SqlServer モジュールのプレビュー版のインストールを行います。(SQLPS がインストールされていなければ AllowClobber は不要だと思います)
Install-Module -Name SqlServer -Force -AllowPrerelease -AllowClobber
モジュールのインストールが完了したらインポートします。
Import-Module SqlServer
これで、Microsoft.Data.SqlClient を利用することが可能となります。
今回インストールした SqlServer モジュールは 22.0.49-preview を使用したのですが、このモジュールの場合はMicrosoft.Data.SqlClient は 5.1.22280.2 が使用されています。
Microsoft.Data.SqlClient を PowerShell から使用したい場合、SqlServer モジュールを介して使用できる環境を整えたほうが楽そうですね。