Skip to content

Commit ce38e64

Browse files
authored
Add release notes for 7.0 (#4053)
1 parent 48b8262 commit ce38e64

14 files changed

Lines changed: 756 additions & 5 deletions

File tree

.github/prompts/release-notes.prompt.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,10 @@ For each package that has relevant PRs in the milestone:
8686
- Look up dependencies using the Dependency Sources from the lookup table above. Resolve concrete versions from [Directory.Packages.props](Directory.Packages.props).
8787
- List dependencies per target framework. Use the project file's `<TargetFrameworks>` to determine which frameworks to list.
8888
- Omit the Contributors section for packages with no public contributors.
89+
- **GA releases (all packages):** When the release is a stable (non-preview) version, structure the notes with two sections:
90+
1. **"Changes Since [last preview]"** — only the delta since the most recent preview of this package.
91+
2. **"Cumulative Changes Since [last stable]"** — all changes since the last stable release of this package, synthesized from all preview release notes plus the GA milestone. This applies to every package (MDS, AKV, Extensions.Azure, Abstractions, Internal.Logging, etc.), not just the core driver. Apply the cross-referencing from Step 3 to eliminate items already shipped in prior stable patch releases.
92+
- **Preview releases:** Only include the delta since the previous release (preview or stable). No cumulative section is needed.
8993

9094
3. **Create or update the version README** at `<Directory>/README.md`. Follow the existing format — see [release-notes/add-ons/AzureKeyVaultProvider/6.1/README.md](release-notes/add-ons/AzureKeyVaultProvider/6.1/README.md) for reference:
9195

CHANGELOG.md

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,137 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
77

88
> **Note:** Releases are sorted in reverse chronological order (newest first).
99
10+
## [Stable Release 7.0.0] - 2026-03-17
11+
12+
This section summarizes all changes across the 7.0 preview cycle for users upgrading from the latest 6.1 stable release.
13+
See the [full release notes](release-notes/7.0/7.0.0.md) for detailed descriptions.
14+
15+
Also released as part of this milestone:
16+
- Released Microsoft.Data.SqlClient.Extensions.Abstractions 1.0.0. See [release notes](release-notes/Extensions/Abstractions/1.0/1.0.0.md).
17+
- Released Microsoft.Data.SqlClient.Extensions.Azure 1.0.0. See [release notes](release-notes/Extensions/Azure/1.0/1.0.0.md).
18+
- Released Microsoft.Data.SqlClient.Internal.Logging 1.0.0. See [release notes](release-notes/Internal/Logging/1.0/1.0.0.md).
19+
- Released Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider 7.0.0. See [release notes](release-notes/add-ons/AzureKeyVaultProvider/7.0/7.0.0.md).
20+
21+
### Changed
22+
23+
- **Breaking:** Removed Azure dependencies from the core package. Entra ID authentication (`ActiveDirectoryAuthenticationProvider` and related types) has been extracted into a new `Microsoft.Data.SqlClient.Extensions.Azure` package. The core `Microsoft.Data.SqlClient` package no longer depends on `Azure.Core`, `Azure.Identity`, or their transitive dependencies. Applications using Entra ID authentication must now install `Microsoft.Data.SqlClient.Extensions.Azure` separately.
24+
([#1108](https://github.com/dotnet/SqlClient/issues/1108),
25+
[#3680](https://github.com/dotnet/SqlClient/pull/3680),
26+
[#3902](https://github.com/dotnet/SqlClient/pull/3902),
27+
[#3904](https://github.com/dotnet/SqlClient/pull/3904),
28+
[#3908](https://github.com/dotnet/SqlClient/pull/3908),
29+
[#3917](https://github.com/dotnet/SqlClient/pull/3917),
30+
[#3982](https://github.com/dotnet/SqlClient/pull/3982),
31+
[#3978](https://github.com/dotnet/SqlClient/pull/3978),
32+
[#3986](https://github.com/dotnet/SqlClient/pull/3986))
33+
34+
- Two additional packages were introduced to support this separation: `Microsoft.Data.SqlClient.Extensions.Abstractions` (shared types between the core driver and extensions) and `Microsoft.Data.SqlClient.Internal.Logging` (shared ETW tracing infrastructure).
35+
([#3626](https://github.com/dotnet/SqlClient/pull/3626),
36+
[#3628](https://github.com/dotnet/SqlClient/pull/3628),
37+
[#3967](https://github.com/dotnet/SqlClient/pull/3967),
38+
[#4038](https://github.com/dotnet/SqlClient/pull/4038))
39+
40+
- Deprecated `SqlAuthenticationMethod.ActiveDirectoryPassword` (ROPC flow). The method is now marked `[Obsolete]` and will generate compiler warnings. Migrate to `ActiveDirectoryInteractive`, `ActiveDirectoryServicePrincipal`, `ActiveDirectoryManagedIdentity`, or `ActiveDirectoryDefault`.
41+
([#3671](https://github.com/dotnet/SqlClient/pull/3671))
42+
43+
- Reverted public visibility of internal interop enums (`IoControlCodeAccess` and `IoControlTransferType`) that were accidentally made public during the project merge.
44+
([#3900](https://github.com/dotnet/SqlClient/pull/3900))
45+
46+
- Removed `Constrained Execution Region` error handling blocks and associated `SqlConnection` cleanup.
47+
([#3535](https://github.com/dotnet/SqlClient/pull/3535))
48+
49+
- Performance improvements across SqlStatistics timing, Always Encrypted scenarios, and connection opening:
50+
([#3609](https://github.com/dotnet/SqlClient/pull/3609),
51+
[#3612](https://github.com/dotnet/SqlClient/pull/3612),
52+
[#3732](https://github.com/dotnet/SqlClient/pull/3732),
53+
[#3660](https://github.com/dotnet/SqlClient/pull/3660),
54+
[#3791](https://github.com/dotnet/SqlClient/pull/3791),
55+
[#3772](https://github.com/dotnet/SqlClient/pull/3772),
56+
[#3554](https://github.com/dotnet/SqlClient/pull/3554))
57+
58+
- Allow `SqlBulkCopy` to operate on hidden columns.
59+
([#3590](https://github.com/dotnet/SqlClient/pull/3590))
60+
61+
- Updated UserAgent feature to use a pipe-delimited format, replacing the previous JSON format.
62+
([#3826](https://github.com/dotnet/SqlClient/pull/3826))
63+
64+
- Minor improvements to Managed SNI tracing to capture continuation events and errors.
65+
([#3859](https://github.com/dotnet/SqlClient/pull/3859))
66+
67+
### Added
68+
69+
- Added `SspiContextProvider` abstract class and `SqlConnection.SspiContextProvider` property, enabling custom SSPI authentication for scenarios like cross-domain Kerberos negotiation and NTLM username/password authentication.
70+
([#2253](https://github.com/dotnet/SqlClient/issues/2253),
71+
[#2494](https://github.com/dotnet/SqlClient/pull/2494))
72+
73+
- Continued refinement of packet multiplexing with bug fixes and stability improvements, plus new app context switches for opt-in control.
74+
([#3534](https://github.com/dotnet/SqlClient/pull/3534),
75+
[#3537](https://github.com/dotnet/SqlClient/pull/3537),
76+
[#3605](https://github.com/dotnet/SqlClient/pull/3605))
77+
78+
- Added support for enhanced routing, a TDS feature that allows the server to redirect connections to a specific server and database during login, enabling Azure SQL Hyperscale read replica load balancing.
79+
([#3641](https://github.com/dotnet/SqlClient/issues/3641),
80+
[#3969](https://github.com/dotnet/SqlClient/pull/3969),
81+
[#3970](https://github.com/dotnet/SqlClient/pull/3970),
82+
[#3973](https://github.com/dotnet/SqlClient/pull/3973))
83+
84+
- Updated pipelines and test suites to compile the driver using the .NET 10 SDK.
85+
([#3686](https://github.com/dotnet/SqlClient/pull/3686))
86+
87+
- Added `SqlConfigurableRetryFactory.BaselineTransientErrors` static property exposing the default transient error codes list as a `ReadOnlyCollection<int>`.
88+
([#3903](https://github.com/dotnet/SqlClient/pull/3903))
89+
90+
- Added app context switch `Switch.Microsoft.Data.SqlClient.EnableMultiSubnetFailoverByDefault` to set `MultiSubnetFailover=true` globally without modifying connection strings.
91+
([#3841](https://github.com/dotnet/SqlClient/pull/3841))
92+
93+
- Added app context switch `Switch.Microsoft.Data.SqlClient.IgnoreServerProvidedFailoverPartner` to let the client ignore server-provided failover partner info in Basic Availability Groups.
94+
([#3625](https://github.com/dotnet/SqlClient/pull/3625))
95+
96+
- Enabled `SqlClientDiagnosticListener` for `SqlCommand` on .NET Framework, closing a long-standing observability gap where diagnostic events were previously only available on .NET Core.
97+
([#3658](https://github.com/dotnet/SqlClient/pull/3658))
98+
99+
- Brought the 15 strongly-typed diagnostic event classes in the `Microsoft.Data.SqlClient.Diagnostics` namespace (e.g., `SqlClientCommandBefore`, `SqlClientConnectionOpenAfter`, `SqlClientTransactionCommitError`) to .NET Framework as part of the codebase merge. These types were originally introduced for .NET Core in 6.0.
100+
([#3493](https://github.com/dotnet/SqlClient/pull/3493))
101+
102+
- Enabled User Agent Feature Extension (opt-in via `Switch.Microsoft.Data.SqlClient.EnableUserAgent`).
103+
([#3606](https://github.com/dotnet/SqlClient/pull/3606))
104+
105+
- Added actionable error message when Entra ID authentication methods are used without the `Microsoft.Data.SqlClient.Extensions.Azure` package installed.
106+
([#3962](https://github.com/dotnet/SqlClient/issues/3962),
107+
[#4046](https://github.com/dotnet/SqlClient/pull/4046))
108+
109+
### Fixed
110+
111+
- Fixed a connection performance regression where SPN generation was triggered for non-integrated authentication modes (e.g., SQL authentication) on the native SNI path.
112+
([#3929](https://github.com/dotnet/SqlClient/pull/3929))
113+
114+
- Fixed `ExecuteScalar` to propagate errors when the server sends data followed by an error token.
115+
([#3912](https://github.com/dotnet/SqlClient/pull/3912))
116+
117+
- Fixed `NullReferenceException` in `SqlDataAdapter` when processing batch scenarios.
118+
([#3857](https://github.com/dotnet/SqlClient/pull/3857))
119+
120+
- Fixed reading of multiple app context switches from a single `AppContextSwitchOverrides` configuration field.
121+
([#3960](https://github.com/dotnet/SqlClient/pull/3960))
122+
123+
- Fixed an edge case in `TdsParserStateObject.TryReadPlpBytes` where zero-length reads returned `null` instead of an empty array.
124+
([#3872](https://github.com/dotnet/SqlClient/pull/3872))
125+
126+
- Fixed issue where extra connection deactivation was occurring.
127+
([#3758](https://github.com/dotnet/SqlClient/pull/3758))
128+
129+
- Fixed debug assertion in connection pool (no impact to production code).
130+
([#3587](https://github.com/dotnet/SqlClient/pull/3587))
131+
132+
- Prevented uninitialized performance counters escaping `CreatePerformanceCounters`.
133+
([#3623](https://github.com/dotnet/SqlClient/pull/3623))
134+
135+
- Fixed `SetProvider` to return immediately if user-defined authentication provider found.
136+
([#3620](https://github.com/dotnet/SqlClient/pull/3620))
137+
138+
- Fixed connection pool concurrency issue.
139+
([#3632](https://github.com/dotnet/SqlClient/pull/3632))
140+
10141
## [Preview Release 7.0.0-preview4.26064.3] - 2026-03-05
11142

12143
This update brings the below changes over the previous preview release:

0 commit comments

Comments
 (0)