Stable Release v7.0.0 #4061
mdaigle
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
This is the general availability release of Microsoft.Data.SqlClient 7.0, a major milestone for the .NET data provider for SQL Server. This release addresses the most upvoted issue in the repository's history — extracting Azure dependencies from the core package — introduces pluggable SSPI authentication, adds enhanced routing for Azure SQL Hyperscale, and delivers async read performance improvements.
Also released as part of this milestone:
Changes Since 7.0.0-preview4
Added
Added actionable error message when Entra ID authentication methods are used without the
Microsoft.Data.SqlClient.Extensions.Azurepackage installed, guiding users to install the correct package.(#3962,
#4046)
Added Azure authentication sample application.
(#3988)
Changed
Other changes
Renamed the
Microsoft.Data.SqlClient.Extensions.Loggingpackage toMicrosoft.Data.SqlClient.Internal.Loggingto indicate it is for internal use only and should not be referenced directly by application code.(#4038)
Fixed non-localized exception strings.
(#4022)
Codebase merge and cleanup:
(#3997,
#4052)
Various test improvements:
(#3891,
#3996,
#4002,
#4034,
#4041,
#4044)
Documentation improvements (including Entra ID branding updates):
(#4021,
#4047,
#4049)
Updated Dependencies
(#4045):
Azure.Coreto v1.51.1Azure.Identityto v1.18.0Azure.Security.KeyVault.Keysto v4.9.0Microsoft.Extensions.Caching.Memoryto v9.0.13 (.NET 9.0)Microsoft.IdentityModel.JsonWebTokensto v8.16.0Microsoft.IdentityModel.Protocols.OpenIdConnectto v8.16.0Microsoft.Bcl.Cryptographyto v9.0.13 (.NET 9.0)System.Configuration.ConfigurationManagerto v9.0.13 (.NET 9.0)System.Diagnostics.DiagnosticSourceto v10.0.3System.Security.Cryptography.Pkcsto v9.0.13 (.NET 9.0)System.Text.Jsonto v10.0.3System.Threading.Channelsto v10.0.3System.ValueTupleto v4.6.2Cumulative Changes Since 6.1
This section summarizes all changes across the 7.0 preview cycle for users upgrading from the latest 6.1 stable release.
Changed
Azure Dependencies Removed from Core Package
What Changed:
Microsoft.Data.SqlClientpackage no longer depends onAzure.Core,Azure.Identity, or their transitive dependencies (e.g.,Microsoft.Identity.Client,Microsoft.Web.WebView2). Azure Active Directory / Entra ID authentication functionality (ActiveDirectoryAuthenticationProviderand related types) has been extracted into a newMicrosoft.Data.SqlClient.Extensions.Azurepackage.(#1108,
#3680,
#3902,
#3904,
#3908,
#3917,
#3982,
#3978,
#3986)
Microsoft.Data.SqlClient.Extensions.Abstractions(shared types between the core driver and extensions) andMicrosoft.Data.SqlClient.Internal.Logging(shared ETW tracing infrastructure).(#3626,
#3628,
#3967,
#4038)
Who Benefits:
Impact:
ActiveDirectoryInteractive,ActiveDirectoryDefault,ActiveDirectoryManagedIdentity, etc.) must now install theMicrosoft.Data.SqlClient.Extensions.AzureNuGet package separately:Added
Pluggable Authentication with SspiContextProvider
What Changed:
SspiContextProviderproperty onSqlConnection, completing the SSPI extensibility work begun in 6.1.0. Applications can now supply a custom SSPI context provider for integrated authentication, enabling custom Kerberos ticket negotiation and NTLM username/password authentication scenarios.(#2253,
#2494)
Who Benefits:
Impact:
SspiContextProvideronSqlConnectionbefore opening the connection:SspiContextProvideris part of the connection pool key. Care should be taken when using this property to ensure the implementation returns a stable identity per resource.Async Read Performance: Packet Multiplexing (Preview)
What Changed:
(#3534,
#3537,
#3605)
Who Benefits:
ExecuteReaderAsyncwith big result sets, streaming scenarios, or bulk data retrieval).Impact:
falseenables the new async processing path. By default, the driver uses the existing (compatible) behavior.Enhanced Routing Support
What Changed:
(#3641,
#3969,
#3970,
#3973)
Who Benefits:
Impact:
Support for .NET 10
What Changed:
(#3686)
Who Benefits:
Impact:
Strongly-Typed Diagnostic Events on .NET Framework
What Changed:
Enabled
SqlClientDiagnosticListenerforSqlCommandon .NET Framework, closing a long-standing observability gap where diagnostic events were previously only emitted on .NET Core.(#3658)
Brought the 15 strongly-typed diagnostic event classes in the
Microsoft.Data.SqlClient.Diagnosticsnamespace — originally introduced for .NET Core in 6.0 — to .NET Framework as part of the codebase merge. Both platforms now use the same strongly-typed event model. The types cover command, connection, and transaction lifecycle events:SqlClientCommandBefore,SqlClientCommandAfter,SqlClientCommandErrorSqlClientConnectionOpenBefore,SqlClientConnectionOpenAfter,SqlClientConnectionOpenErrorSqlClientConnectionCloseBefore,SqlClientConnectionCloseAfter,SqlClientConnectionCloseErrorSqlClientTransactionCommitBefore,SqlClientTransactionCommitAfter,SqlClientTransactionCommitErrorSqlClientTransactionRollbackBefore,SqlClientTransactionRollbackAfter,SqlClientTransactionRollbackError(#3493)
Who Benefits:
SqlClientDiagnosticListenerevents for observability, distributed tracing, or custom telemetry. These users now have parity with .NET Core, gaining IntelliSense, compile-time safety, and eliminating the need to access diagnostic payloads via reflection or dictionary lookups.Impact:
SqlCommandnow emits the same diagnostic events that were previously only available on .NET Core. Subscribers toDiagnosticListenerevents (e.g.,Microsoft.Data.SqlClient.WriteCommandBefore) receive the strongly-typed objects:IReadOnlyList<KeyValuePair<string, object>>for backward compatibility with code that iterates properties generically.Other Additions
Added
SqlConfigurableRetryFactory.BaselineTransientErrorsstatic property exposing the default transient error codes list as aReadOnlyCollection<int>, making it easier to extend the default list with application-specific error codes.(#3903)
Added app context switch
Switch.Microsoft.Data.SqlClient.EnableMultiSubnetFailoverByDefaultto setMultiSubnetFailover=trueglobally without modifying connection strings.(#3841)
Added app context switch
Switch.Microsoft.Data.SqlClient.IgnoreServerProvidedFailoverPartnerto let the client ignore server-provided failover partner info in Basic Availability Groups.(#3625)
Enabled User Agent Feature Extension (opt-in via
Switch.Microsoft.Data.SqlClient.EnableUserAgent).(#3606)
Changed
Deprecation of
SqlAuthenticationMethod.ActiveDirectoryPasswordWhat Changed:
SqlAuthenticationMethod.ActiveDirectoryPassword(the ROPC flow) is now marked[Obsolete]and will generate compiler warnings. This aligns with Microsoft's move toward mandatory multifactor authentication.(#3671)
Who Benefits:
Impact:
Authentication=Active Directory Password, migrate to a supported alternative:Active Directory InteractiveActive Directory Service PrincipalActive Directory Managed IdentityActive Directory DefaultBreaking Changes
IoControlCodeAccessandIoControlTransferType) that were accidentally made public during the project merge.(#3900)
Other Changes
Removed
Constrained Execution Regionerror handling blocks and associatedSqlConnectioncleanup.(#3535)
Performance improvements across SqlStatistics timing, Always Encrypted scenarios, and connection opening:
(#3609,
#3612,
#3732,
#3660,
#3791,
#3772,
#3554)
Allow
SqlBulkCopyto operate on hidden columns.(#3590)
Updated UserAgent feature to use a pipe-delimited format, replacing the previous JSON format.
(#3826)
Minor improvements to Managed SNI tracing to capture continuation events and errors.
(#3859)
Fixed
Fixed a connection performance regression where SPN generation was triggered for non-integrated authentication modes (e.g., SQL authentication) on the native SNI path.
(#3929)
Fixed
ExecuteScalarto propagate errors when the server sends data followed by an error token.(#3912)
Fixed
NullReferenceExceptioninSqlDataAdapterwhen processing batch scenarios.(#3857)
Fixed reading of multiple app context switches from a single
AppContextSwitchOverridesconfiguration field.(#3960)
Fixed an edge case in
TdsParserStateObject.TryReadPlpByteswhere zero-length reads returnednullinstead of an empty array.(#3872)
Fixed issue where extra connection deactivation was occurring.
(#3758)
Fixed debug assertion in connection pool (no impact to production code).
(#3587)
Prevented uninitialized performance counters escaping
CreatePerformanceCounters.(#3623)
Fixed
SetProviderto return immediately if user-defined authentication provider found.(#3620)
Fixed connection pool concurrency issue.
(#3632)
Contributors
We thank the following public contributors. Their efforts toward this project are very much appreciated.
Target Platform Support
Dependencies
.NET 9.0
.NET 8.0
.NET Standard 2.0
.NET Framework 4.6.2+
This discussion was created from the release Stable Release v7.0.0.
Beta Was this translation helpful? Give feedback.
All reactions