Skip to content

Commit aa15530

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 aa15530

10 files changed

Lines changed: 389 additions & 26 deletions

File tree

CHANGELOG.md

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,110 @@ 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+
### Added
15+
16+
- Added `SqlConnection.GetSchemaAsync` overloads mirroring the existing synchronous shapes.
17+
([#3005](https://github.com/dotnet/SqlClient/pull/3005))
18+
19+
- Added SQL Graph column-alias support (`$node_id`, `$edge_id`, `$from_id`, `$to_id`) as destination columns in `SqlBulkCopy`.
20+
([#3677](https://github.com/dotnet/SqlClient/pull/3677))
21+
22+
- `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.
23+
([#4125](https://github.com/dotnet/SqlClient/pull/4125))
24+
25+
- 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.
26+
([#4295](https://github.com/dotnet/SqlClient/pull/4295))
27+
28+
- 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.
29+
([#4288](https://github.com/dotnet/SqlClient/pull/4288))
30+
31+
### Changed
32+
33+
- 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`.
34+
([#4270](https://github.com/dotnet/SqlClient/pull/4270))
35+
36+
- Implemented pool shutdown for `ChannelDbConnectionPool` and added automatic pool size reduction (pruning) for the channel-based pool.
37+
([#4302](https://github.com/dotnet/SqlClient/pull/4302),
38+
[#4304](https://github.com/dotnet/SqlClient/pull/4304))
39+
40+
- Hardened `SqlConnection` internal state transitions with `Interlocked.CompareExchange` guards.
41+
([#4267](https://github.com/dotnet/SqlClient/pull/4267))
42+
43+
- Removed legacy connection-options inheritance from internal APIs and simplified `TryOpenConnection` / `TryReplaceConnection` / pool interfaces.
44+
([#4235](https://github.com/dotnet/SqlClient/pull/4235),
45+
[#4237](https://github.com/dotnet/SqlClient/pull/4237),
46+
[#4261](https://github.com/dotnet/SqlClient/pull/4261),
47+
[#4415](https://github.com/dotnet/SqlClient/pull/4415))
48+
49+
- Consolidated OS detection through a single `OsConstants` type built on `OperatingSystem.Is*()` intrinsics; removed the legacy `ADP.IsWindows` member and added FreeBSD detection.
50+
([#4255](https://github.com/dotnet/SqlClient/pull/4255))
51+
52+
- Populated the `DataTypes` schema table from `MetaType` in code (instead of an embedded XML resource) and added the SQL Server 2025 `json` type to the collection.
53+
([#3858](https://github.com/dotnet/SqlClient/pull/3858))
54+
55+
- Added async generic helpers to reduce sync/async duplication.
56+
([#4334](https://github.com/dotnet/SqlClient/pull/4334))
57+
58+
- Use hardcoded LCID mappings when decoding strings.
59+
([#4212](https://github.com/dotnet/SqlClient/pull/4212))
60+
61+
- Reduced allocations by skipping lock acquisition on `SqlErrorCollection` counters when no errors exist, and by avoiding stack-trace materialization on expected `null`-return paths.
62+
([#4099](https://github.com/dotnet/SqlClient/pull/4099),
63+
[#4102](https://github.com/dotnet/SqlClient/pull/4102),
64+
[#4157](https://github.com/dotnet/SqlClient/pull/4157))
65+
66+
- Improved accuracy of `EnclaveDiffieHellmanInfo.Size`.
67+
([#4346](https://github.com/dotnet/SqlClient/pull/4346))
68+
69+
- `SqlVector<float>` now serializes and deserializes multibyte values as little-endian explicitly.
70+
([#3861](https://github.com/dotnet/SqlClient/pull/3861))
71+
72+
- 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`.
73+
([#4287](https://github.com/dotnet/SqlClient/pull/4287),
74+
[#4288](https://github.com/dotnet/SqlClient/pull/4288))
75+
76+
### Fixed
77+
78+
- Fixed a `NullReferenceException` in `SqlCommand.Cancel()` when the active connection has already been torn down.
79+
([#4372](https://github.com/dotnet/SqlClient/pull/4372))
80+
81+
- Fixed Always Encrypted column master key signature verification incorrectly reusing cached results after a prior verification failure.
82+
([#4339](https://github.com/dotnet/SqlClient/pull/4339))
83+
84+
- Fixed missing bounds checks on TDS token and feature-extension-acknowledgment data lengths that could allow a spoofing server to trigger unbounded allocations.
85+
([#4340](https://github.com/dotnet/SqlClient/pull/4340))
86+
87+
- Fixed `SqlBulkCopy` failing in least-privilege environments.
88+
([#4306](https://github.com/dotnet/SqlClient/pull/4306))
89+
90+
- Fixed Always Encrypted reads of `CekMdVersion` and `EkValueCount` to align with the TDS specification.
91+
([#4240](https://github.com/dotnet/SqlClient/pull/4240))
92+
93+
- Fixed `LoginWithFailover` to validate parser state before continuing.
94+
([#4140](https://github.com/dotnet/SqlClient/pull/4140))
95+
96+
- Fixed the SPN used during login to use the resolved port instead of the instance name when `Protocol=None` or `Protocol=Admin`.
97+
([#4180](https://github.com/dotnet/SqlClient/pull/4180))
98+
99+
- Fixed a race in `SqlConnection.TryOpenInner` that could surface as `InvalidCastException`; the same race now returns a deterministic `InvalidOperationException`.
100+
([#4179](https://github.com/dotnet/SqlClient/pull/4179))
101+
102+
- Fixed several `CancellationTokenSource` leaks across `SqlDataReader`, `SqlConnection` reconnect, `SqlCommand` reconnect timeout, and sequential-stream helpers.
103+
([#4009](https://github.com/dotnet/SqlClient/pull/4009))
104+
105+
- Fixed server certificate documentation.
106+
([#4408](https://github.com/dotnet/SqlClient/pull/4408))
107+
108+
### Removed
109+
110+
- **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`.
111+
([#4015](https://github.com/dotnet/SqlClient/pull/4015))
112+
9113
## [Stable Release 7.0.2] - 2026-06-24
10114

11115
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)