SqlClient Active Directory認証が別のパッケージに移動されました

ASP.NET Core 11 は、Microsoft.Data.SqlClient 7.x (.NET 10 では 5.x から) を推移的に取り込む。 Microsoft.Data.SqlClient 6.0 以降では、Microsoft Entra ID (以前のAzure Active Directory) 認証プロバイダーはメイン Microsoft.Data.SqlClient パッケージに含まれるのではなく、別の Microsoft.Data.SqlClient.Extensions.Azure パッケージに付属しています。 SQL 接続文字列で Entra ID Authentication= 値を使用するアプリは、このパッケージへの参照を追加する必要があります。

導入されたバージョン

.NET 11 Preview 3

以前の動作

以前は、Microsoft.Data.SqlClient 5.x パッケージには、Entra ID認証プロバイダーが含まれていました。 Microsoft.Extensions.Caching.SqlServer や Entity Framework Core SQL Server プロバイダーを通じて Microsoft.Data.SqlClient を推移的に取り込んでいるあらゆる ASP.NET Core アプリでは、Server=...;Database=...;Authentication=Active Directory Default のような接続文字列はそのままで使用できました。

新しい動作

ASP.NET Core 11 以降では、推移的な Microsoft.Data.SqlClient バージョンは 7.x であり、Entra ID認証プロバイダーは付属していません。 接続文字列で Active Directory *Authentication= 値のいずれかを使用していて、Microsoft.Data.SqlClient.Extensions.Azure パッケージを追加していない場合は、次のようなランタイム エラーが発生します。

Cannot find an authentication provider for 'ActiveDirectoryDefault'.
Install the 'Microsoft.Data.SqlClient.Extensions.Azure' NuGet package to use Active Directory (Entra ID) authentication methods.

これは、Microsoft.Extensions.Caching.SqlServer (DistributedSqlServerCache) を使用するアプリ、EF Core SQL Server プロバイダーを使用するアプリ、および推移的に Microsoft.Data.SqlClient を取り込み、Entra ID認証を使用するその他のコード パスに影響します。

破壊的変更の種類

この変更は 動作の変更です。

変更の理由

Microsoft Entra ID認証を Microsoft.Data.SqlClient から移行する変更は、アップストリーム Microsoft.Data.SqlClient 6.0 リリースで行われました。 ASP.NET Core 11 は、推移的に依存する SqlClient バージョンをアップグレードすることによって、その変更を取り上げる。 詳細については、 dotnet/aspnetcore#66179 を参照してください。

Active Directory * Authentication= 値を持つ SQL 接続文字列をアプリで使用する場合は、PackageReference を Microsoft.Data.SqlClient.Extensions.Azure に追加します。

<ItemGroup>
  <PackageReference Include="Microsoft.Data.SqlClient.Extensions.Azure" 
    Version="1.0.0" />
</ItemGroup>

ASP.NET Core "個々のアカウント" プロジェクト テンプレートが更新され、サポートされているAzure SQL構成のこの参照が追加されました。 新しいプロジェクトでは、手動で変更する必要はありません。

影響を受ける API

None. 中断は、NuGet パッケージをインストールするための推移的なランタイム要件です。 Microsoft.AspNetCore.* の型は影響を受けありません。