Skip to content

Commit 771b16c

Browse files
authored
[v7.1.0-preview1] Release Notes and vBump (#4241)
* vbumpo * 🤖 Release notes and updates to related agent stuff
1 parent 62d96ad commit 771b16c

10 files changed

Lines changed: 291 additions & 24 deletions

File tree

.github/instructions/architecture.instructions.md

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,11 @@ src/
3434
## Unified Project Model
3535

3636
### Architecture Goal
37-
The driver is transitioning away from separate `netfx/` and `netcore/` project files toward a **single unified project** at `src/Microsoft.Data.SqlClient/src/Microsoft.Data.SqlClient.csproj`. This project multi-targets all supported frameworks from one codebase:
37+
The driver is transitioning away from separate `netfx/` and `netcore/` project files toward a **single unified project** at `src/Microsoft.Data.SqlClient/src/Microsoft.Data.SqlClient.csproj`. This project targets the modern .NET TFMs on every host and conditionally adds .NET Framework on Windows:
3838

3939
```xml
40-
<TargetFrameworks>net462;net8.0;net9.0</TargetFrameworks>
40+
<TargetFrameworks>net8.0;net9.0</TargetFrameworks>
41+
<TargetFrameworks Condition="'$(NormalizedTargetOs)' == 'windows_nt'">$(TargetFrameworks);net462</TargetFrameworks>
4142
```
4243

4344
**All new code MUST go into `src/Microsoft.Data.SqlClient/src/`**. Do NOT add files to the legacy `netcore/src/` or `netfx/src/` directories.
@@ -82,7 +83,7 @@ When writing code that differs by platform, use these preprocessor directives:
8283
| `#if _UNIX` | Code for Unix/Linux/macOS OS (any framework) |
8384

8485
Guidelines:
85-
1. All code must compile for all target frameworks (`net462`, `net8.0`, `net9.0`)
86+
1. All code must compile for the TFMs supported by the current target OS: `net8.0`/`net9.0` everywhere, plus `net462` on Windows builds
8687
2. Use `#if NETFRAMEWORK` or `#if NET` for framework-specific code paths
8788
3. Use `#if _WINDOWS` or `#if _UNIX` for OS-specific code paths
8889
4. Avoid APIs that don't exist on a target platform without conditional compilation
@@ -104,11 +105,15 @@ The `ref/` directories define the public API surface:
104105
**IMPORTANT**: Any public API changes MUST update the corresponding reference assembly in the appropriate `ref/` directory.
105106

106107
### Build Output
107-
Build artifacts are organized by framework and OS:
108+
Build artifacts are organized by reference mode, configuration, OS, and framework:
108109
```
109-
artifacts/Microsoft.Data.SqlClient/{Configuration}/{TargetOs}/{TargetFramework}/
110+
artifacts/Microsoft.Data.SqlClient/{ReferenceType}-{Configuration}/{NormalizedTargetOs}/{TargetFramework}/
110111
```
111112

113+
`ReferenceType` is a first-class build dimension in this branch. Local and CI builds may run in:
114+
- `Project` mode — sibling packages referenced as projects
115+
- `Package` mode — sibling packages restored from locally produced NuGet packages
116+
112117
## SNI (SQL Server Network Interface) Layer
113118

114119
Two implementations exist:

.github/instructions/testing.instructions.md

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ applyTo: "**/tests/**,**/*Test*.cs"
99
src/Microsoft.Data.SqlClient/tests/
1010
├── FunctionalTests/ # Tests without SQL Server dependency
1111
├── ManualTests/ # Integration tests requiring SQL Server
12+
├── PerformanceTests/ # Benchmark-style perf validation
13+
├── StressTests/ # Long-running stress coverage
1214
├── UnitTests/ # Unit tests with minimal dependencies
1315
└── tools/
1416
└── Microsoft.Data.SqlClient.TestUtilities/
@@ -109,11 +111,11 @@ public async Task OpenAsync_TimingDependent_MayFail() { ... }
109111
All test runs use `--blame-hang-timeout 10m` to kill tests that hang for more than 10 minutes. This is configured in `build.proj` and applied to all test targets. If a test is expected to run longer than 10 minutes, it must be restructured or split.
110112

111113
### Test Filter Configuration
112-
The default test filter is defined in `build.proj`:
114+
The default test filter is defined in `build.proj` via `TestFilters`:
113115
```xml
114-
<FilterStatement Condition="'$(FilterStatement)' == ''">category!=failing&amp;category!=flaky</FilterStatement>
116+
<TestFilters Condition="'$(TestFilters)' == ''">category!=failing&amp;category!=flaky&amp;category!=interactive</TestFilters>
115117
```
116-
This can be overridden via MSBuild property: `msbuild -p:FilterStatement="your_filter"`.
118+
This can be overridden via MSBuild property: `msbuild build.proj -t:TestSqlClientUnit -p:TestFilters="your_filter"`.
117119

118120
### Test Attributes
119121
```csharp
@@ -140,16 +142,16 @@ public void TestIntermittentlyFails() { ... }
140142
### Using MSBuild (Recommended)
141143
```bash
142144
# Build and run all unit tests
143-
msbuild -t:RunUnitTests
145+
msbuild build.proj -t:TestSqlClientUnit
144146

145147
# Run functional tests only
146-
msbuild -t:RunFunctionalTests
148+
msbuild build.proj -t:TestSqlClientFunctional
147149

148150
# Run manual tests for specific framework
149-
msbuild -t:RunManualTests -p:TF=net8.0
151+
msbuild build.proj -t:TestSqlClientManual -p:TestFramework=net8.0
150152

151153
# Run specific test set
152-
msbuild -t:RunManualTests -p:TestSet=1
154+
msbuild build.proj -t:TestSqlClientManual -p:TestSet=1
153155
```
154156

155157
### Using dotnet CLI
@@ -159,7 +161,7 @@ dotnet test "src/Microsoft.Data.SqlClient/tests/UnitTests/Microsoft.Data.SqlClie
159161
-p:Configuration=Release
160162

161163
# Functional tests with filter (excludes failing, flaky, and interactive tests)
162-
dotnet test "src/Microsoft.Data.SqlClient/tests/FunctionalTests/Microsoft.Data.SqlClient.Tests.csproj" \
164+
dotnet test "src/Microsoft.Data.SqlClient/tests/FunctionalTests/Microsoft.Data.SqlClient.FunctionalTests.csproj" \
163165
--filter "category!=failing&category!=flaky&category!=interactive"
164166

165167
# Run ONLY quarantined flaky tests (for investigation)
@@ -323,7 +325,7 @@ AssertExtensions.ThrowsContains<SqlException>(() => action(), "expected message"
323325

324326
### Running with Coverage
325327
```bash
326-
msbuild -t:RunTests -p:CollectCoverage=true
328+
msbuild build.proj -t:TestSqlClientUnit -p:TestCodeCoverage=true
327329
```
328330

329331
### Coverage Targets

.github/skills/generate-mstest-filter/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ dotnet test <project.csproj> --list-tests --filter "<your-filter>" --framework <
187187

188188
```bash
189189
# Generate filter for "ChannelDbConnectionPoolTest" class
190-
dotnet test tests/UnitTests/UnitTests.csproj --list-tests --filter "FullyQualifiedName~ChannelDbConnectionPoolTest" --framework net9.0
190+
dotnet test src/Microsoft.Data.SqlClient/tests/UnitTests/Microsoft.Data.SqlClient.UnitTests.csproj --list-tests --filter "FullyQualifiedName~ChannelDbConnectionPoolTest" --framework net9.0
191191

192192
# Expected output shows matching tests:
193193
# The following Tests are available:

CHANGELOG.md

Lines changed: 63 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,65 @@ 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+
## [Preview Release 7.1.0-preview1] - 2026-04-29
11+
12+
This update brings the following changes since the [7.0.0](release-notes/7.0/7.0.0.md) release.
13+
See the [full release notes](release-notes/7.1/7.1.0-preview1.md) for detailed descriptions.
14+
15+
### Added
16+
17+
- Added `SqlBatch` support on .NET Framework so the batching API is available across the full supported platform matrix.
18+
([#3926](https://github.com/dotnet/SqlClient/pull/3926))
19+
20+
- Added additional accepted connection-string synonyms for cross-driver alignment, including `ColumnEncryption`, `ConnectTimeout`, `FailoverPartner`, `PacketSize`, and `WorkstationId`.
21+
([#4192](https://github.com/dotnet/SqlClient/pull/4192))
22+
23+
### Changed
24+
25+
- `SqlConnection.ClearPool` and `SqlConnection.ClearAllPools` now work correctly with the channel-based pool implementation.
26+
([#4194](https://github.com/dotnet/SqlClient/pull/4194))
27+
28+
- Added type forwards for public authentication abstractions moved into `Microsoft.Data.SqlClient.Extensions.Abstractions`.
29+
([#4067](https://github.com/dotnet/SqlClient/pull/4067),
30+
[#4117](https://github.com/dotnet/SqlClient/pull/4117))
31+
32+
- Enabled the User Agent feature extension by default.
33+
([#4124](https://github.com/dotnet/SqlClient/pull/4124),
34+
[#4154](https://github.com/dotnet/SqlClient/pull/4154))
35+
36+
- Reduced allocations when sending large string values, plus related source-build and packaging consolidation updates.
37+
([#4072](https://github.com/dotnet/SqlClient/pull/4072),
38+
[#4033](https://github.com/dotnet/SqlClient/pull/4033),
39+
[#4068](https://github.com/dotnet/SqlClient/pull/4068),
40+
[#4204](https://github.com/dotnet/SqlClient/pull/4204))
41+
42+
### Fixed
43+
44+
- Fixed `SqlBulkCopy` on SQL Server 2016 graph tables by extracting graph metadata with dynamic SQL.
45+
([#3714](https://github.com/dotnet/SqlClient/issues/3714),
46+
[#4092](https://github.com/dotnet/SqlClient/pull/4092),
47+
[#4147](https://github.com/dotnet/SqlClient/pull/4147))
48+
49+
- Fixed `SqlBulkCopy` support for Azure Synapse Analytics dedicated SQL pools.
50+
([#4149](https://github.com/dotnet/SqlClient/issues/4149),
51+
[#4176](https://github.com/dotnet/SqlClient/pull/4176),
52+
[#4182](https://github.com/dotnet/SqlClient/pull/4182))
53+
54+
- Fixed vector float32 metadata so `GetFieldType()` and `GetProviderSpecificFieldType()` return the expected vector type.
55+
([#4104](https://github.com/dotnet/SqlClient/issues/4104),
56+
[#4105](https://github.com/dotnet/SqlClient/pull/4105),
57+
[#4152](https://github.com/dotnet/SqlClient/pull/4152))
58+
59+
- Added the missing `System.Data.Common` dependency for .NET Framework consumers.
60+
([#4063](https://github.com/dotnet/SqlClient/pull/4063),
61+
[#4074](https://github.com/dotnet/SqlClient/pull/4074))
62+
63+
- Fixed a `SqlDataReader` streaming bug triggered by calling `IsDBNull()` before reading streamed column data.
64+
([#4082](https://github.com/dotnet/SqlClient/pull/4082))
65+
66+
- Fixed a `NullReferenceException` in `SqlDataReader`.
67+
([#4159](https://github.com/dotnet/SqlClient/pull/4159))
68+
1069
## [Stable Release 7.0.1] - 2026-04-23
1170

1271
This update brings the following changes since the [7.0.0](release-notes/7.0/7.0.0.md) release.
@@ -480,7 +539,7 @@ This update brings the following changes over the previous preview release:
480539

481540
*What Changed:*
482541

483-
- Updated pipelines and test suites to compile the driver using the .NET 10 SDK. Cleaned up unnecessary dependency references.
542+
- Updated pipelines and test suites to compile the driver using the .NET 10 SDK. Cleaned up unnecessary dependency references.
484543
([#3686](https://github.com/dotnet/SqlClient/pull/3686))
485544

486545
*Who Benefits:*
@@ -687,7 +746,7 @@ This update brings the following changes since [7.0.0-preview1.25257.1]
687746

688747
#### Other changes
689748

690-
- Improve performance in `SqlStatistics` by using `Environment.TickCount` for calculating execution timing
749+
- Improve performance in `SqlStatistics` by using `Environment.TickCount` for calculating execution timing
691750
([#3609](https://github.com/dotnet/SqlClient/pull/3609))
692751

693752
- Improve performance in Always Encrypted scenarios by using lower-allocation primitives
@@ -1359,7 +1418,7 @@ This update brings the below changes over the previous release:
13591418
- Added support for Georgian collation [#2194](https://github.com/dotnet/SqlClient/pull/2194)
13601419
- Added Localization support on .NET [#2210](https://github.com/dotnet/SqlClient/pull/2110)
13611420
- Added .NET 8 support [#2230](https://github.com/dotnet/SqlClient/pull/2230)
1362-
- Added explicit version for major .NET version dependencies on System.Runtime.Caching 8.0.0, System.Configuration.ConfigurationManager 8.0.0, and System.Diagnostics.
1421+
- Added explicit version for major .NET version dependencies on System.Runtime.Caching 8.0.0, System.Configuration.ConfigurationManager 8.0.0, and System.Diagnostics.
13631422
- DiagnosticSource 8.0.0 [#2303](https://github.com/dotnet/SqlClient/pull/2303)
13641423

13651424
### Fixed
@@ -1597,7 +1656,7 @@ This update brings the below changes over the previous release:
15971656

15981657
- Moved to new System.Data.SqlTypes APIs in **.NET 7** and upper. [1934](https://github.com/dotnet/SqlClient/pull/1934) and [#1981](https://github.com/dotnet/SqlClient/pull/1981)
15991658
- Changed **[UseOneSecFloorInTimeoutCalculationDuringLogin](https://learn.microsoft.com/sql/connect/ado-net/appcontext-switches#enable-a-minimum-timeout-during-login)** App Context switch default to **true** and extended its effect to .NET and .NET Standard. [#2012](https://github.com/dotnet/SqlClient/pull/2012)
1600-
- Updated `Microsoft.Identity.Client` version from 4.47.2 to 4.53.0. [#2031](https://github.com/dotnet/SqlClient/pull/2031), [#2055](https://github.com/dotnet/SqlClient/pull/2055)
1659+
- Updated `Microsoft.Identity.Client` version from 4.47.2 to 4.53.0. [#2031](https://github.com/dotnet/SqlClient/pull/2031), [#2055](https://github.com/dotnet/SqlClient/pull/2055)
16011660
- Code health improvement: [#1985](https://github.com/dotnet/SqlClient/pull/1985)
16021661

16031662
## [Stable Release 2.1.6] - 2023-04-27

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ variables:
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.0.0-ci$(AssemblyBuildNumber)
62+
value: 7.1.0-preview1ci$(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: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -113,13 +113,13 @@ variables:
113113
value: 'drop_build_dependent_build_package_SqlClient'
114114

115115
- name: sqlClientFileVersion
116-
value: '7.0.0.$(_assemblyBuildNumber)'
116+
value: '7.1.0.$(_assemblyBuildNumber)'
117117

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

124124
# ------------------------------------------------------------------------
125125
# SqlServer Package

0 commit comments

Comments
 (0)