Skip to content

Commit 56d78bf

Browse files
[v7.1.0-preview2] Release Notes and vBump
* vBump in Versions.props, OneBranch pipelines, and CI/PR pipelines to v7.1.0-preview2 * Release notes for v7.1.0-preview2
1 parent 1ed8646 commit 56d78bf

10 files changed

Lines changed: 380 additions & 26 deletions

File tree

CHANGELOG.md

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

77
> **Note:** Releases are sorted in reverse chronological order (newest first).
88
9+
## [Preview Release 7.1.0-preview2] - 2026-07-09
10+
11+
This update brings the following changes since the [7.1.0-preview1](release-notes/7.1/7.1.0-preview1.md) release.
12+
See the [full release notes](release-notes/7.1/7.1.0-preview2.md) for detailed descriptions.
13+
14+
> **Important — package version alignment:** Starting with the [7.0.2](release-notes/7.0/7.0.2.md) release, the `Microsoft.Data.SqlClient` driver and its companion packages share a single aligned version. Preview 2 of the `7.1` line continues this alignment; the following packages now ship together as `7.1.0-preview2`:
15+
>
16+
> - `Microsoft.Data.SqlClient`
17+
> - `Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider`
18+
> - `Microsoft.Data.SqlClient.Extensions.Azure`
19+
> - `Microsoft.Data.SqlClient.Extensions.Abstractions`
20+
> - `Microsoft.Data.SqlClient.Internal.Logging`
21+
>
22+
> (`Microsoft.SqlServer.Server` continues to version independently and remains at `1.0.0`.)
23+
>
24+
> Applications that reference `Microsoft.Data.SqlClient.Extensions.Azure` must upgrade it to `7.1.0-preview2` when upgrading `Microsoft.Data.SqlClient` to `7.1.0-preview2`.
25+
26+
### Added
27+
28+
- Added `SqlConnection.GetSchemaAsync` overloads mirroring the existing synchronous shapes.
29+
([#3005](https://github.com/dotnet/SqlClient/pull/3005))
30+
31+
- Added SQL Graph column-alias support (`$node_id`, `$edge_id`, `$from_id`, `$to_id`) as destination columns in `SqlBulkCopy`.
32+
([#3677](https://github.com/dotnet/SqlClient/pull/3677))
33+
34+
- `SqlBatchCommand.CommandBehavior` (a driver-specific property that existed since batching was introduced but was previously ignored) is now honored during `SqlBatch` execution, and `SqlBatch.ExecuteReader` now respects the `CommandBehavior` value passed to it.
35+
([#4125](https://github.com/dotnet/SqlClient/pull/4125))
36+
37+
- Added a `Connection Idle Timeout` connection-string keyword and matching `SqlConnectionStringBuilder.IdleTimeout` property to evict idle connections in pool v2 (default `300` seconds; `0` disables). Enforcement is opt-in via `Switch.Microsoft.Data.SqlClient.UseLegacyIdleTimeoutBehavior=false`; the default preserves the historical pooling behavior.
38+
([#4295](https://github.com/dotnet/SqlClient/pull/4295))
39+
40+
- Added Windows Account Manager (WAM) broker support for the supported Entra ID authentication modes on Windows, including the new `ActiveDirectoryAuthenticationProviderOptions` type, an `ActiveDirectoryAuthenticationProvider(ActiveDirectoryAuthenticationProviderOptions)` constructor, a cross-platform `SetParentActivityOrWindowFunc(Func<object>?)`, and a `useWamBroker` configuration attribute.
41+
([#4288](https://github.com/dotnet/SqlClient/pull/4288))
42+
43+
### Changed
44+
45+
- The `Connect Timeout` budget is now propagated through pool acquisition via a shared `TimeoutTimer`, so time spent waiting in the pool is deducted from the overall timeout. Adds a dependency on `Microsoft.Bcl.TimeProvider`.
46+
([#4270](https://github.com/dotnet/SqlClient/pull/4270))
47+
48+
- Implemented pool shutdown for `ChannelDbConnectionPool` and added automatic pool size reduction (pruning) for the channel-based pool.
49+
([#4302](https://github.com/dotnet/SqlClient/pull/4302),
50+
[#4304](https://github.com/dotnet/SqlClient/pull/4304))
51+
52+
- Hardened `SqlConnection` internal state transitions with `Interlocked.CompareExchange` guards.
53+
([#4267](https://github.com/dotnet/SqlClient/pull/4267))
54+
55+
- Removed legacy connection-options inheritance from internal APIs and simplified `TryOpenConnection` / `TryReplaceConnection` / pool interfaces.
56+
([#4235](https://github.com/dotnet/SqlClient/pull/4235),
57+
[#4237](https://github.com/dotnet/SqlClient/pull/4237),
58+
[#4261](https://github.com/dotnet/SqlClient/pull/4261),
59+
[#4415](https://github.com/dotnet/SqlClient/pull/4415))
60+
61+
- Added the SQL Server 2025 `json` data type to the `DataTypes` schema table returned by `SqlConnection.GetSchema`.
62+
([#3858](https://github.com/dotnet/SqlClient/pull/3858))
63+
64+
- Added async generic helpers to reduce sync/async duplication.
65+
([#4334](https://github.com/dotnet/SqlClient/pull/4334))
66+
67+
- Use hardcoded LCID mappings when decoding strings.
68+
([#4212](https://github.com/dotnet/SqlClient/pull/4212))
69+
70+
- Reduced allocations by skipping lock acquisition on `SqlErrorCollection` counters when no errors exist, and by avoiding stack-trace materialization on expected `null`-return paths.
71+
([#4099](https://github.com/dotnet/SqlClient/pull/4099),
72+
[#4102](https://github.com/dotnet/SqlClient/pull/4102),
73+
[#4157](https://github.com/dotnet/SqlClient/pull/4157))
74+
75+
- Improved accuracy of `EnclaveDiffieHellmanInfo.Size`.
76+
([#4346](https://github.com/dotnet/SqlClient/pull/4346))
77+
78+
- `SqlVector<float>` now serializes and deserializes multibyte values as little-endian explicitly.
79+
([#3861](https://github.com/dotnet/SqlClient/pull/3861))
80+
81+
- Updated `Microsoft.Identity.Client` (and added `Microsoft.Identity.Client.Broker`) to `4.84.2` to enable WAM, and updated the bundled .NET 10 SDK to `10.0.300`.
82+
([#4287](https://github.com/dotnet/SqlClient/pull/4287),
83+
[#4288](https://github.com/dotnet/SqlClient/pull/4288))
84+
85+
### Fixed
86+
87+
- Fixed a `NullReferenceException` in `SqlCommand.Cancel()` when the active connection has already been torn down.
88+
([#4372](https://github.com/dotnet/SqlClient/pull/4372))
89+
90+
- Fixed Always Encrypted column master key signature verification incorrectly reusing cached results after a prior verification failure.
91+
([#4339](https://github.com/dotnet/SqlClient/pull/4339))
92+
93+
- Fixed missing bounds checks on TDS token and feature-extension-acknowledgment data lengths that could allow a spoofing server to trigger unbounded allocations.
94+
([#4340](https://github.com/dotnet/SqlClient/pull/4340))
95+
96+
- Fixed `SqlBulkCopy` failing in least-privilege environments.
97+
([#4306](https://github.com/dotnet/SqlClient/pull/4306))
98+
99+
- Fixed Always Encrypted reads of `CekMdVersion` and `EkValueCount` to align with the TDS specification.
100+
([#4240](https://github.com/dotnet/SqlClient/pull/4240))
101+
102+
- Fixed `LoginWithFailover` to validate parser state before continuing.
103+
([#4140](https://github.com/dotnet/SqlClient/pull/4140))
104+
105+
- Fixed the SPN used during login to use the resolved port instead of the instance name when `Protocol=None` or `Protocol=Admin`.
106+
([#4180](https://github.com/dotnet/SqlClient/pull/4180))
107+
108+
- Fixed a race in `SqlConnection.TryOpenInner` that could surface as `InvalidCastException`; the same race now returns a deterministic `InvalidOperationException`.
109+
([#4179](https://github.com/dotnet/SqlClient/pull/4179))
110+
111+
- Fixed several `CancellationTokenSource` leaks across `SqlDataReader`, `SqlConnection` reconnect, `SqlCommand` reconnect timeout, and sequential-stream helpers.
112+
([#4009](https://github.com/dotnet/SqlClient/pull/4009))
113+
114+
- Fixed server certificate documentation.
115+
([#4408](https://github.com/dotnet/SqlClient/pull/4408))
116+
117+
### Removed
118+
119+
- **Breaking:** Removed SQL Server 7.0 and SQL Server 2000 support, along with the `TypeSystem.SQLServer2000` enum value and the `Type System Version=SQL Server 2000` connection-string value. Connection strings that specify this value now throw `ArgumentException` when the connection is opened. Supported values are `Latest`, `SQL Server 2005`, `SQL Server 2008`, and `SQL Server 2012`.
120+
([#4015](https://github.com/dotnet/SqlClient/pull/4015))
121+
9122
## [Stable Release 7.0.2] - 2026-06-24
10123

11124
This update brings the following changes since the [7.0.1](release-notes/7.0/7.0.1.md) release.

eng/pipelines/libraries/ci-build-variables.yml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,42 +24,42 @@ variables:
2424

2525
# Abstractions library assembly file version
2626
- name: abstractionsAssemblyFileVersion
27-
value: 1.1.0.$(assemblyBuildNumber)
27+
value: 7.1.0.$(assemblyBuildNumber)
2828

2929
# Abstractions library NuGet package version
3030
- name: abstractionsPackageVersion
31-
value: 1.1.0-preview1ci$(Build.BuildNumber)
31+
value: 7.1.0-preview2ci$(Build.BuildNumber)
3232

3333
# AKV provider assembly file version
3434
- name: akvAssemblyFileVersion
3535
value: 7.1.0.$(assemblyBuildNumber)
3636

3737
# AKV provider NuGet package version
3838
- name: akvPackageVersion
39-
value: 7.1.0-preview1ci$(Build.BuildNumber)
39+
value: 7.1.0-preview2ci$(Build.BuildNumber)
4040

4141
# Azure library assembly file version
4242
- name: azureAssemblyFileVersion
43-
value: 1.1.0.$(assemblyBuildNumber)
43+
value: 7.1.0.$(assemblyBuildNumber)
4444

4545
# Azure library NuGet package version
4646
- name: azurePackageVersion
47-
value: 1.1.0-preview1ci$(Build.BuildNumber)
47+
value: 7.1.0-preview2ci$(Build.BuildNumber)
4848

4949
# Logging library assembly file version
5050
- name: loggingAssemblyFileVersion
51-
value: 1.1.0.$(assemblyBuildNumber)
51+
value: 7.1.0.$(assemblyBuildNumber)
5252

5353
# Logging library NuGet package version
5454
- name: loggingPackageVersion
55-
value: 1.1.0-preview1ci$(Build.BuildNumber)
55+
value: 7.1.0-preview2ci$(Build.BuildNumber)
5656

5757
# MDS library NuGet package version
5858
# NOTE: This differs from the other structures! MdsVersions.props will deconstruct a provided
5959
# package version and build an assembly version from it. If the build number is included
6060
# before the "-" the build number will be appended again, generating an invalid file version.
6161
- name: mdsPackageVersion
62-
value: 7.1.0-preview1ci$(AssemblyBuildNumber)
62+
value: 7.1.0-preview2ci$(AssemblyBuildNumber)
6363

6464
# SqlServer library NuGet package version
6565
# NOTE: SqlServer's version props derive file version from the package version by appending the

eng/pipelines/onebranch/variables/package-variables.yml

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -53,13 +53,13 @@ variables:
5353
value: 'drop_build_abstractions_build_package_Abstractions'
5454

5555
- name: abstractionsFileVersion
56-
value: '1.0.0.$(_assemblyBuildNumber)'
56+
value: '7.1.0.$(_assemblyBuildNumber)'
5757

5858
- name: abstractionsPackageVersion
5959
${{ if parameters.isPreview }}:
60-
value: '1.0.0-preview1.$(Build.BuildNumber)'
60+
value: '7.1.0-preview2.$(Build.BuildNumber)'
6161
${{ else }}:
62-
value: '1.0.0'
62+
value: '7.1.0'
6363

6464
# ------------------------------------------------------------------------
6565
# AKV Provider Package
@@ -68,13 +68,13 @@ variables:
6868
value: 'drop_build_addons_build_package_AkvProvider'
6969

7070
- name: akvProviderFileVersion
71-
value: '7.0.0.$(_assemblyBuildNumber)'
71+
value: '7.1.0.$(_assemblyBuildNumber)'
7272

7373
- name: akvProviderPackageVersion
7474
${{ if parameters.isPreview }}:
75-
value: '7.0.0-preview1.$(Build.BuildNumber)'
75+
value: '7.1.0-preview2.$(Build.BuildNumber)'
7676
${{ else }}:
77-
value: '7.0.0'
77+
value: '7.1.0'
7878

7979
# ------------------------------------------------------------------------
8080
# Azure Package
@@ -83,13 +83,13 @@ variables:
8383
value: 'drop_build_dependent_build_package_Azure'
8484

8585
- name: azureFileVersion
86-
value: '1.0.0.$(_assemblyBuildNumber)'
86+
value: '7.1.0.$(_assemblyBuildNumber)'
8787

8888
- name: azurePackageVersion
8989
${{ if parameters.isPreview }}:
90-
value: '1.0.0-preview1.$(Build.BuildNumber)'
90+
value: '7.1.0-preview2.$(Build.BuildNumber)'
9191
${{ else }}:
92-
value: '1.0.0'
92+
value: '7.1.0'
9393

9494
# ------------------------------------------------------------------------
9595
# Logging Package
@@ -98,13 +98,13 @@ variables:
9898
value: 'drop_build_independent_build_package_Logging'
9999

100100
- name: loggingFileVersion
101-
value: '1.0.0.$(_assemblyBuildNumber)'
101+
value: '7.1.0.$(_assemblyBuildNumber)'
102102

103103
- name: loggingPackageVersion
104104
${{ if parameters.isPreview }}:
105-
value: '1.0.0-preview1.$(Build.BuildNumber)'
105+
value: '7.1.0-preview2.$(Build.BuildNumber)'
106106
${{ else }}:
107-
value: '1.0.0'
107+
value: '7.1.0'
108108

109109
# ------------------------------------------------------------------------
110110
# SqlClient Package
@@ -117,7 +117,7 @@ variables:
117117

118118
- name: sqlClientPackageVersion
119119
${{ if parameters.isPreview }}:
120-
value: '7.1.0-preview1.$(Build.BuildNumber)'
120+
value: '7.1.0-preview2.$(Build.BuildNumber)'
121121
${{ else }}:
122122
value: '7.1.0'
123123

0 commit comments

Comments
 (0)