Skip to content

Conversation

@dependabot
Copy link
Contributor

@dependabot dependabot bot commented on behalf of github Nov 8, 2025

Updated Microsoft.Data.SqlClient from 5.1.5 to 6.1.2.

Release notes

Sourced from Microsoft.Data.SqlClient's releases.

6.1.2

This update brings the below changes over the previous stable release:

Fixed

  • Fixed an issue where initializing PerformanceCounters would throw System.InvalidOperationException #​3629
  • Fixed an issue where a Custom SqlClientAuthenticationProvider was being overwritten by default implementation. #​3651
  • Fixed a concurrency issue in connection pooling where the number of active connections could be lower than the configured maximum pool size. #​3653

6.1.1

This update includes the following changes since the 6.1.0 release:

Fixed

  • Reverted changes related to improving partial packet detection, fixup, and replay functionality. This revert addresses regressions introduced in 6.1.0. (#​3556)
  • Applied reference assembly corrections supporting vector, fixed JSON tests, and ensured related tests are enabled. #​3562
  • Fixed SqlVector<T>.Null API signature in Reference assembly. #​3521

Changed

  • Upgraded Azure.Identity and other dependencies to newer versions. (#​3538) (#​3552)

6.1.0

Release Notes

[!WARNING]
This release version is delisted from NuGet.org and is no longer supported.
It contains critical bugs that make it unsuitable for use.

Stable Release 6.1.0 - 2025-07-25

This update brings the following changes since the 6.0.2 stable release:

Added

Added dedicated SQL Server vector datatype support

What Changed:

  • Optimized vector communications between MDS and SQL Server 2025, employing a custom binary format over the TDS protocol. (#​3433, #​3443)
  • Reduced processing load compared to existing JSON-based vector support.
  • Initial support for 32-bit single-precision floating point vectors.

Who Benefits:

  • Applications moving large vector data sets will see beneficial improvements to processing times and memory requirements.
  • Vector-specific APIs are ready to support future numeric representations with a consistent look-and-feel.

Impact:

  • Reduced transmission and processing times for vector operations versus JSON using SQL Server 2025 preview:
    • Reads: 50x improvement
    • Writes: 3.3x improvement
    • Bulk Copy: 19x improvement
    • (Observed with vector column of max 1998 size, and 10,000 records for each operation.)
  • Improved memory footprint due to the elimination of JSON serialization/deserialization and string representation bloat.
  • For backwards compatibility with earlier SQL Server Vector implementations, applications may continue to use JSON strings to send/receive vector data, although they will not see any of the performance improvements noted above.

Revived .NET Standard 2.0 target support

What Changed:

Who Benefits:

  • Libraries that depend on MDS may seamlessly target any of the following frameworks:
    • .NET Standard 2.0
    • .NET Framework 4.6.2 and above
    • .NET 8.0
    • .NET 9.0
  • Applications should continue to target runtimes.
    ... (truncated)

6.1.0-preview2

Preview Release 6.1.0-preview2.25178.5 - 2025-06-27

This update brings the following changes since the 6.1.0-preview1 release:

Added

Added dedicated SQL Server vector datatype support

What Changed:

  • Optimized vector communications between MDS and SQL Server 2025, employing a custom binary format over the TDS protocol. (#​3433, #​3443)
  • Reduced processing load compared to existing JSON-based vector support.
  • Initial support for 32-bit single-precision floating point vectors.

Who Benefits:

  • Applications moving large vector data sets will see beneficial improvements to processing times and memory requirements.
  • Vector-specific APIs are ready to support future numeric representations with a consistent look-and-feel.

Impact:

  • Reduced transmission and processing times for vector operations versus JSON using SQL Server 2025 preview:
    • Reads: 50x improvement
    • Writes: 3.3x improvement
    • Bulk Copy: 19x improvement
    • (Observed with vector column of max 1998 size, and 10,000 records for each operation.)
  • Improved memory footprint due to the elimination of JSON serialization/deserialization and string representation bloat.
  • For backwards compatibility with earlier SQL Server Vector implementations, applications may continue to use JSON strings to send/receive vector data, although they will not see any of the performance improvements noted above.

Revived .NET Standard 2.0 target support

What Changed:

Who Benefits:

  • Libraries that depend on MDS may seamlessly target any of the following frameworks:
    • .NET Standard 2.0
    • .NET Framework 4.6.2 and above
    • .NET 8.0
    • .NET 9.0
  • Applications should continue to target runtimes.
    • The MDS .NET Standard 2.0 target framework support does not include an actual implementation, and cannot be used with a runtime.
    • An application's build/publish process should always pick the appropriate MDS .NET/.NET Framework runtime implementation.
    • Custom build/publish actions that incorrectly try to deploy the MDS .NET Standard 2.0 reference DLL at runtime are not supported.

Impact:

... (truncated)

6.1.0-preview1

This update brings the following changes over the previous release:

Added

  • Added packet multiplexing support to improve large data read performance. #​2714 #​3161 #​3202
  • Added support for special casing with Fabric endpoints. #​3084

Fixed

  • Fixed distributed transactions to be preserved during pooled connection resets. #​3019.
  • Fixed application crash when the Data Source parameter begins with a comma. #​3250.
  • Resolved synonym count discrepancies in debug mode. #​3098.
  • Addressed warnings for down-level SSL/TLS versions. #​3126.

Changed

New Contributors

6.0.3

This update brings the below changes over the previous stable release:

Fixed

  • Fixed an issue where a Custom SqlClientAuthenticationProvider was being overwritten by default implementation. #​3652
  • Fixed a concurrency issue in connection pooling where the number of active connections could be lower than the configured maximum pool size. #​3654

Changed

  • Updated MSAL usage as per code compliance requirements #​3360
  • Updated SqlDecimal implementation to improve code compliance #​3466
  • Updated Azure.Identity and related dependencies #​3553

6.0.2

This update brings the below changes over the previous release:

Fixed

  • Fixed possible NullPointerException during socket receive #​3283
  • Fixed reference assembly definitions for SqlJson APIs #​3169
  • Fixed an error reading the output parameter of type JSON while executing stored procedure #​3173

Changed

6.0.1

Released to NuGet.org on 2025-01-23

Breaking Changes

  • Removed support for .NET Standard. #​2386
  • Removed support for .NET 6 #​2927
  • Removed UWP (UAP) references. #​2483
  • Removed SQL 2000 client-side debugging support for .NET Framework #​2981, #​2940

Added

JSON Support

JSON data type support is now available in Microsoft.Data.SqlClient v6.0. This release introduces SqlJson type available as an extension to System.Data.SqlDbTypes:

using System;
using System.Data.SqlTypes;
using System.Text.Json;

namespace Microsoft.Data.SqlTypes
{
    /// <summary>
    /// Represents the JSON data type in SQL Server.
    /// </summary>
    public class SqlJson : INullable
    {
        /// <summary>
        /// Parameterless constructor. Initializes a new instance of the SqlJson class which 
        /// represents a null JSON value.
        /// </summary>
        public SqlJson() { }

        /// <summary>
        /// Takes a <see cref="string"/> as input and initializes a new instance of the SqlJson class.
        /// </summary>
        /// <param name="jsonString"></param>
        public SqlJson(string jsonString) { }

        /// <summary>
        /// Takes a <see cref="JsonDocument"/> as input and initializes a new instance of the SqlJson class.
        /// </summary>
        /// <param name="jsonDoc"></param>
        public SqlJson(JsonDocument jsonDoc) { }

        /// <inheritdoc/>
        public bool IsNull => throw null;

        /// <summary>
        /// Represents a null instance of the <see cref="SqlJson"/> type.
 ... (truncated)

## 6.0.0-preview3.24332.3

## Breaking Changes
- Dropped support for .NET 6 [#​2927](https://github.com/dotnet/SqlClient/pull/2927)
- Removed SQL 2000 client-side debugging support for .NET Framework [#​2981](https://github.com/dotnet/SqlClient/pull/2981), [#​2940](https://github.com/dotnet/SqlClient/pull/2940)

### Added
- Enabled NuGet package auditing via NuGet.org audit source [#​3024](https://github.com/dotnet/SqlClient/pull/3024)
- Added support for .NET 9 [#​2946](https://github.com/dotnet/SqlClient/pull/2946)
- Added dependency on System.Security.Cryptography.Pkcs:9.0.0 to address [SYSLIB0057](https://learn.microsoft.com/en-us/dotnet/fundamentals/syslib-diagnostics/syslib0057)[#​2946](https://github.com/dotnet/SqlClient/pull/2946)
- Added dependency on Microsoft.Bcl.Cryptography:9.0.0 [#​2946](https://github.com/dotnet/SqlClient/pull/2946)
- Added missing SqlCommand_BeginExecuteReader code sample [#​3009](https://github.com/dotnet/SqlClient/pull/3009)
- Added support for SqlConnectionOverrides in OpenAsync() API [#​2433](https://github.com/dotnet/SqlClient/pull/2433)
- Added localization in Czech, Polish, and Turkish [#​2987](https://github.com/dotnet/SqlClient/pull/2987)

### Fixed
- Reverted default value of UseMinimumLoginTimeout context switch to 'true' [#​2419](https://github.com/dotnet/SqlClient/pull/2419)
- Added missing DynamicallyAccessedMembers attributes in .NET Runtime reference assemblies. [#​2946](https://github.com/dotnet/SqlClient/pull/2946)
- Synchronized dependencies of Reference Assemblies with Runtime assemblies [#​2878](https://github.com/dotnet/SqlClient/pull/2878)
- Fixed lazy initialization of the _SqlMetaData hidden column map for .NET Framework [#​2964](https://github.com/dotnet/SqlClient/pull/2964)

### Changed
- Updated Microsoft.Extensions.Caching.Memory to 9.0.0 for all frameworks [#​2946](https://github.com/dotnet/SqlClient/pull/2946)
- Updated System.Configuration.ConfigurationManager to 9.0.0 [#​2946](https://github.com/dotnet/SqlClient/pull/2946)
- Updated docs to use absolute links [#​2949](https://github.com/dotnet/SqlClient/pull/2949)
- Removed System.Text.Json dependency from .NET 8 [#​2930](https://github.com/dotnet/SqlClient/pull/2930)

### Contributors

Thanks to the following public contributors. Their efforts toward this project are very much appreciated.

- @​MichelZ
- @​EamonHetherton
- @​edwardneal
- @​deadlydog
- @​mus65

For detailed release notes, refer to [6.0.0-preview3.md](https://github.com/dotnet/SqlClient/blob/main/release-notes/6.0/6.0.0-preview3.md)

## 6.0.0-preview2.24304.8

### Added

- Added a dependency on System.Text.Json 8.0.5 for .NET 8+ and 6.0.10 for other versions [#​2921](https://github.com/dotnet/SqlClient/pull/2921)
- Added support for [JSON native datatype](https://learn.microsoft.com/en-us/sql/t-sql/data-types/json-data-type?view=azuresqldb-current&preserve-view=true) currently in [Public preview in SQL Server](https://learn.microsoft.com/azure/azure-sql/database/doc-changes-updates-release-notes-whats-new?view=azuresql).  [#​2916](https://github.com/dotnet/SqlClient/pull/2916), [#​2892](https://github.com/dotnet/SqlClient/pull/2892), [#​2891](https://github.com/dotnet/SqlClient/pull/2891), [#​2880](https://github.com/dotnet/SqlClient/pull/2880), [#​2882](https://github.com/dotnet/SqlClient/pull/2882), [#​2829](https://github.com/dotnet/SqlClient/pull/2829), [#​2830](https://github.com/dotnet/SqlClient/pull/2830)
- Added readme to nuget package [#​2826](https://github.com/dotnet/SqlClient/pull/2826)

### Fixed

- Fixed scale serialization when explicitly set to 0 [#​2411](https://github.com/dotnet/SqlClient/pull/2411)
- Fixed issue blocking GetSchema commands from being enrolled into the current transaction [#​2876](https://github.com/dotnet/SqlClient/pull/2876)
- Adjusted retry logic to allow errors with negative numbers to be considered transient [#​2896](https://github.com/dotnet/SqlClient/pull/2896)
- Fixed string formatting in OutOfMemory exceptions [#​2797](https://github.com/dotnet/SqlClient/pull/2797)
- Increased routing attempts to 10 in netcore for LoginNoFailover and added routing support to LoginWithFailover to standardize routing behavior between netcore and netfx [#​2873](https://github.com/dotnet/SqlClient/pull/2873)
- Restructured documentation into XML format so that it displays correctly in visual studio [#​2836](https://github.com/dotnet/SqlClient/pull/2836), [#​2822](https://github.com/dotnet/SqlClient/pull/2822), [#​2834](https://github.com/dotnet/SqlClient/pull/2834), [#​2851](https://github.com/dotnet/SqlClient/pull/2851), [#​2863](https://github.com/dotnet/SqlClient/pull/2863), [#​2864](https://github.com/dotnet/SqlClient/pull/2864), [#​2865](https://github.com/dotnet/SqlClient/pull/2865), [#​2869](https://github.com/dotnet/SqlClient/pull/2869), [#​2871](https://github.com/dotnet/SqlClient/pull/2871), [#​2837](https://github.com/dotnet/SqlClient/pull/2837), [#​2821](https://github.com/dotnet/SqlClient/pull/2821)
- Fixed cleanup behavior when column decryption fails. Prevents leaving stale data on the wire for pooled connections [#​2843](https://github.com/dotnet/SqlClient/pull/2843), [#​2825](https://github.com/dotnet/SqlClient/pull/2825)

### Changed

- Updated System.Configuration.ConfigurationManager from 8.0.0 to 8.0.1 for .Net 8 [#​2921](https://github.com/dotnet/SqlClient/pull/2921)
- Updated Microsoft.Extensions.Caching.Memory from 8.0.0 to 8.0.1 for .Net 8 [#​2921](https://github.com/dotnet/SqlClient/pull/2921)
- Code Health Improvements [#​2915](https://github.com/dotnet/SqlClient/pull/2915), [#​2844](https://github.com/dotnet/SqlClient/pull/2844), [#​2812](https://github.com/dotnet/SqlClient/pull/2812), [#​2805](https://github.com/dotnet/SqlClient/pull/2805), [#​2897](https://github.com/dotnet/SqlClient/pull/2897), [#​2376](https://github.com/dotnet/SqlClient/pull/2376), [#​2814](https://github.com/dotnet/SqlClient/pull/2814), [#​2889](https://github.com/dotnet/SqlClient/pull/2889), [#​2885](https://github.com/dotnet/SqlClient/pull/2885), [#​2854](https://github.com/dotnet/SqlClient/pull/2854), [#​2835](https://github.com/dotnet/SqlClient/pull/2835), [#​2442](https://github.com/dotnet/SqlClient/pull/2442), [#​2820](https://github.com/dotnet/SqlClient/pull/2820), [#​2831](https://github.com/dotnet/SqlClient/pull/2831), [#​2907](https://github.com/dotnet/SqlClient/pull/2907), [#​2910](https://github.com/dotnet/SqlClient/pull/2910), [#​2898](https://github.com/dotnet/SqlClient/pull/2898), [#​2928](https://github.com/dotnet/SqlClient/pull/2928), [#​2929](https://github.com/dotnet/SqlClient/pull/2929), [#​2936](https://github.com/dotnet/SqlClient/pull/2936), [#​2939](https://github.com/dotnet/SqlClient/pull/2939)

## New Contributors
* @​Markeli made their first contribution in https://github.com/dotnet/SqlClient/pull/2797
* @​EamonHetherton made their first contribution in https://github.com/dotnet/SqlClient/pull/2411

For detailed release notes, refer to [6.0.0-preview2.md](https://github.com/dotnet/SqlClient/blob/main/release-notes/6.0/6.0.0-preview2.md)

## 6.0.0-preview1.24240.8

## [Preview Release 6.0.0-preview1.24240.8] - 2024-08-27

This update brings the below changes over the 5.2 release:

### Breaking Changes

- Removed support for .NET Standard. [#​2386](https://github.com/dotnet/SqlClient/pull/2386)
- Removed UWP (uap) references. [#​2483](https://github.com/dotnet/SqlClient/pull/2483)

### Added

- Added `TokenCredential` object to take advantage of token caching in `ActiveDirectoryAuthenticationProvider`. [#​2380](https://github.com/dotnet/SqlClient/pull/2380)
- Added `DateOnly` and `TimeOnly` support to `DataTable` as a structured parameter. [#​2258](https://github.com/dotnet/SqlClient/pull/2258)
- Added `Microsoft.Data.SqlClient.Diagnostics.SqlClientDiagnostic` type in .NET. [#​2226](https://github.com/dotnet/SqlClient/pull/2226)
- Added scope trace for `GenerateSspiClientContext`. [#​2497](https://github.com/dotnet/SqlClient/pull/2497), [#​2725](https://github.com/dotnet/SqlClient/pull/2725)

### Fixed

- Fixed `Socket.Connect` timeout issue caused by thread starvation. [#​2777](https://github.com/dotnet/SqlClient/pull/2777)
- Fixed pending data with `SqlDataReader` against an encrypted column. [#​2618](https://github.com/dotnet/SqlClient/pull/2618)
- Fixed Entra authentication when using infinite connection timeout in `ActiveDirectoryAuthenticationProvider`. [#​2651](https://github.com/dotnet/SqlClient/pull/2651)
- Fixed `GetSchema` by excluding unsupported engines due to lack of support for `ASSEMBLYPROPERTY` function. [#​2593](https://github.com/dotnet/SqlClient/pull/2593)
- Fixed SSPI retry negotiation with default port in .NET. [#​2559](https://github.com/dotnet/SqlClient/pull/2559)
- Fixed assembly path in .NET 8.0 and `.AssemblyAttributes`. [#​2550](https://github.com/dotnet/SqlClient/pull/2550)
- Fixed certificate chain validation. [#​2487](https://github.com/dotnet/SqlClient/pull/2487)
- Fixed clone of `SqlConnection` to include `AccessTokenCallback`. [#​2525](https://github.com/dotnet/SqlClient/pull/2525)
- Fixed issue with `DateTimeOffset` in table-valued parameters, which was introduced in 5.2. [#​2453](https://github.com/dotnet/SqlClient/pull/2453)
- Fixed `ArgumentNullException` on `SqlDataRecord.GetValue` when using user-defined data type on .NET. [#​2448](https://github.com/dotnet/SqlClient/pull/2448)
- Fixed `SqlBuffer` and `SqlGuild` when it's null. [#​2310](https://github.com/dotnet/SqlClient/pull/2310)
- Fixed `SqlBulkCopy.WriteToServer` state in a consecutive calls. [#​2375](https://github.com/dotnet/SqlClient/pull/2375)
- Fixed null reference exception with `SqlConnection.FireInfoMessageEventOnUserErrors` after introducing the batch command. [#​2399](https://github.com/dotnet/SqlClient/pull/2399)

### Changed

- Updated Microsoft.Data.SqlClient.SNI version to `6.0.0-preview1.24226.4`. [#​2772](https://github.com/dotnet/SqlClient/pull/2772)
- Improved access to `SqlAuthenticationProviderManager.Instance` and avoid early object initiation. [#​2636](https://github.com/dotnet/SqlClient/pull/2636)
- Removed undocumented properties of `Azure.Identity` in `ActiveDirectoryAuthenticationProvider`. [#​2562](https://github.com/dotnet/SqlClient/pull/2562)
- Replaced `System.Runtime.Caching` with `Microsoft.Extensions.Caching.Memory`. [#​2493](https://github.com/dotnet/SqlClient/pull/2493)
- Updated `EnableOptimizedParameterBinding` to only accept text mode commands. [#​2417](https://github.com/dotnet/SqlClient/pull/2417)
- Updated `Azure.Identity` version from `1.10.3` to `1.11.4`. [#​2577](https://github.com/dotnet/SqlClient/pull/2577)
- Updated `Azure.Core` version from `1.35.0` to `1.38.0`. [#​2462](https://github.com/dotnet/SqlClient/pull/2462)
- Updated `Azure.Security.KeyVault.Keys` version from `4.4.0` to `4.5.0`. [#​2462](https://github.com/dotnet/SqlClient/pull/2462)
- Updated `Microsoft.IdentityModel.JsonWebTokens` and `Microsoft.IdentityModel.Protocols.OpenIdConnect` from `6.35.0` to `7.5.0`. [#​2429](https://github.com/dotnet/SqlClient/pull/2429)
- Removed direct dependency to `Microsoft.Identity.Client` to take the transient dependecy through `Azure.Identity`. [#​2577](https://github.com/dotnet/SqlClient/pull/2577)
- Removed unnecessary references `Microsoft.Extensions.Caching.Memory` and `System.Security.Cryptography.Cng` after removing .NET Standard. [#​2577](https://github.com/dotnet/SqlClient/pull/2577)
- Improved memory allocation when reader opened by `CommandBehavior.SequentialAccess` over the big string columns. [#​2356](https://github.com/dotnet/SqlClient/pull/2356)
- Improved SSPI by consolidating the context generation to single abstraction and using memory/span for SSPI generation. [#​2255](https://github.com/dotnet/SqlClient/pull/2255), [#​2447](https://github.com/dotnet/SqlClient/pull/2447)
- Reverted the [#​2281](https://github.com/dotnet/SqlClient/pull/2281) code changes on ManagedSNI. [#​2395](https://github.com/dotnet/SqlClient/pull/2395)
- Updated assembly version to 6.0.0.0. [#​2382](https://github.com/dotnet/SqlClient/pull/2382)
- Code health improvements: [#​2366](https://github.com/dotnet/SqlClient/pull/2366), [#​2369](https://github.com/dotnet/SqlClient/pull/2369), [#​2381](https://github.com/dotnet/SqlClient/pull/2381), [#​2390](https://github.com/dotnet/SqlClient/pull/2390), [#​2392](https://github.com/dotnet/SqlClient/pull/2392), [#​2403](https://github.com/dotnet/SqlClient/pull/2403), [#​2410](https://github.com/dotnet/SqlClient/pull/2410), [#​2413](https://github.com/dotnet/SqlClient/pull/2413), [#​2425](https://github.com/dotnet/SqlClient/pull/2425), [#​2428](https://github.com/dotnet/SqlClient/pull/2428), [#​2440](https://github.com/dotnet/SqlClient/pull/2440), [#​2443](https://github.com/dotnet/SqlClient/pull/2443), [#​2450](https://github.com/dotnet/SqlClient/pull/2450), [#​2466](https://github.com/dotnet/SqlClient/pull/2466), [#​2486](https://github.com/dotnet/SqlClient/pull/2486), [#​2521](https://github.com/dotnet/SqlClient/pull/2521), [#​2522](https://github.com/dotnet/SqlClient/pull/2522), [#​2533](https://github.com/dotnet/SqlClient/pull/2533), [#​2552](https://github.com/dotnet/SqlClient/pull/2552), [#​2560](https://github.com/dotnet/SqlClient/pull/2560), [#​2726](https://github.com/dotnet/SqlClient/pull/2726), [#​2751](https://github.com/dotnet/SqlClient/pull/2751), [#​2811](https://github.com/dotnet/SqlClient/pull/2811)
 ... (truncated)

## 5.2.3

This update brings the following changes since the 5.2.2 release:

### Fixed

- Fixed possible `NullPointerException` during socket receive (PR [#​3284](https://github.com/dotnet/SqlClient/pull/3284))
- Fixed inconsistencies between source and reference projects (PR [#​3124](https://github.com/dotnet/SqlClient/pull/3124))
- Adjusted retry logic to allow errors with negative numbers to be considered transient (PR [#​3185](https://github.com/dotnet/SqlClient/pull/3185))

### Changed

- Updated the following dependencies:
  - [System.Private.Uri](https://www.nuget.org/packages/System.Private.Uri) 4.3.2 - Avoid transitive [CVE-2019-0820](https://msrc.microsoft.com/update-guide/en-US/advisory/CVE-2019-0820) (PR [#​3076](https://github.com/dotnet/SqlClient/pull/3076))
  - [Microsoft.Extensions.Caching.Memory](https://www.nuget.org/packages/Microsoft.Extensions.Caching.Memory/6.0.3) 6.0.1 to 6.0.3 - Avoid [CVE-2024-43483](https://github.com/advisories/GHSA-qj66-m88j-hmgj) (PR [#​3280](https://github.com/dotnet/SqlClient/pull/3280))

## 5.2.2

## [Stable release 5.2.2] - 2024-08-27

### Fixed

- Fixed `AcquireTokenAsync` timeout handling for edge cases in `ActiveDirectoryAuthenticationProvider`. [#​2650](https://github.com/dotnet/SqlClient/pull/2650)
- Fixed issue with `Socket.Connect` in managed SNI. [#​2779](https://github.com/dotnet/SqlClient/pull/2779)
- Fixed path for `AssemblyAttributes` in obj folder causing NET 8.0 assembly to appear in NET 6.0 dll. [#​2789](https://github.com/dotnet/SqlClient/pull/2789)
- Fixed SSPI retry negotiation with default port in .NET. [#​2815](https://github.com/dotnet/SqlClient/pull/2815)
- Fixed `ArgumentNullException` on `SqlDataRecord.GetValue` when using user-defined data type on .NET.  [#​2816](https://github.com/dotnet/SqlClient/pull/2816)
- Fixed pending data with `SqlDataReader` against an encrypted column. [#​2817](https://github.com/dotnet/SqlClient/pull/2817)

### Changed

- Upgraded `Azure.Identity` version from 1.11.3 to 1.11.4 [#​2648](https://github.com/dotnet/SqlClient/pull/2648) to address [CVE-2024-35255](https://github.com/advisories/GHSA-m5vv-6r4h-3vj9).
- Upgraded `Microsoft.Identity.Client` version from 4.60.0 to 4.61.3 [#​2648](https://github.com/dotnet/SqlClient/pull/2648) to address [CVE-2024-35255](https://github.com/advisories/GHSA-m5vv-6r4h-3vj9).
- Added caching to `TokenCredential` objects to take advantage of token caching. [#​2775](https://github.com/dotnet/SqlClient/pull/2775)

## 5.2.1

## [Stable release 5.2.1] - 2024-05-31

### Fixed

- Fixed connection errors on Linux when Data Source property contains both named instance and port [#​2436](https://github.com/dotnet/SqlClient/pull/2436)
- Fixed `SqlConnection.FireInfoMessageEventOnUserErrors` when set to true throws an exception [#​2505](https://github.com/dotnet/SqlClient/pull/2505)
- Fixed exception when using `DATETIMEOFFSET(n)` in a TVP if `n` is 1, 2, 3, or 4 [#​2506](https://github.com/dotnet/SqlClient/pull/2506)
- Reverted PR [#​1983](https://github.com/dotnet/SqlClient/pull/1983) which caused connection failure delays when using `OpenAsync` [#​2507](https://github.com/dotnet/SqlClient/pull/2507)
- Fixed `SqlConnection.Clone()` to include `AccessTokenCallback` [#​2527](https://github.com/dotnet/SqlClient/pull/2527)

### Changed

- Upgraded `Azure.Identity` version from 1.10.3 to 1.11.3 [#​2492](https://github.com/dotnet/SqlClient/pull/2492), [#​2528](https://github.com/dotnet/SqlClient/pull/2528)
- Upgraded `Microsoft.Identity.Client` version from 4.56.0 to 4.60.3 [#​2492](https://github.com/dotnet/SqlClient/pull/2492)
- Code Health improvements: [#​2467](https://github.com/dotnet/SqlClient/pull/2467)


## 5.2.0

## [Stable release 5.2.0] - 2024-02-28

### Added

- Added a new `AccessTokenCallBack` API to `SqlConnection`. [#​1260](https://github.com/dotnet/SqlClient/pull/1260)
- Added `SqlBatch` support on .NET 6+ [#​1825](https://github.com/dotnet/SqlClient/pull/1825), [#​2223](https://github.com/dotnet/SqlClient/pull/2223),[#​2371](https://github.com/dotnet/SqlClient/pull/2371), [#​2373](https://github.com/dotnet/SqlClient/pull/2373)
- Added support of `SqlDiagnosticListener` on **.NET Standard**. [#​1931](https://github.com/dotnet/SqlClient/pull/1931)
- Added new property `RowsCopied64` to `SqlBulkCopy`. [#​2004](https://github.com/dotnet/SqlClient/pull/2004)
- Added support for the `SuperSocketNetLib` registry option for Encrypt on .NET on Windows. [#​2047](https://github.com/dotnet/SqlClient/pull/2047)
- Added the ability to generate debugging symbols in a separate package file [#​2137](https://github.com/dotnet/SqlClient/pull/2137)
- Added Workload Identity authentication support [#​2159](https://github.com/dotnet/SqlClient/pull/2159), [#​2264](https://github.com/dotnet/SqlClient/pull/2264)
- Added support for Big Endian systems [#​2170](https://github.com/dotnet/SqlClient/pull/2170)
- Added support for Georgian collation [#​2194](https://github.com/dotnet/SqlClient/pull/2194)
- Added Localization support on .NET [#​2210](https://github.com/dotnet/SqlClient/pull/2110)
- Added .NET 8 support [#​2230](https://github.com/dotnet/SqlClient/pull/2230)
- Added explicit version for major .NET version dependencies on System.Runtime.Caching 8.0.0, System.Configuration.ConfigurationManager 8.0.0, and System.Diagnostics. 
- DiagnosticSource 8.0.0 [#​2303](https://github.com/dotnet/SqlClient/pull/2303)

### Changed

- Improved parsing buffered characters in `TdsParser`. [#​1544](https://github.com/dotnet/SqlClient/pull/1544)
- Added Microsoft.SqlServer.Types to verify support for SqlHierarchyId and Spatial for .NET Core. [#​1848](https://github.com/dotnet/SqlClient/pull/1848)
- Moved to new System.Data.SqlTypes APIs on **.NET 7** and up. [#​1934](https://github.com/dotnet/SqlClient/pull/1934) and [#​1981](https://github.com/dotnet/SqlClient/pull/1981)
- Removed reference to Microsoft.Win32.Registry since it's shipped starting with .NET 6.0. [#​1974](https://github.com/dotnet/SqlClient/pull/1974)
- 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)
- 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)
- Switched to the new .NET [NegotiateAuthentication](https://learn.microsoft.com/en-us/dotnet/api/system.net.security.negotiateauthentication?view=net-7.0) API on .NET 7.0 and above for SSPI token negotiation using Managed SNI. [#​2063](https://github.com/dotnet/SqlClient/pull/2063)
- Removed `ignoreSniOpenTimeout` in open connection process on Windows. [#​2067](https://github.com/dotnet/SqlClient/pull/2067)
- Enforce explicit ordinal for internal `StringComparison` operations. [#​2068](https://github.com/dotnet/SqlClient/pull/2068)
- Improved error messages when validating server certificates in managed SNI (Linux/macOS) [#​2060](https://github.com/dotnet/SqlClient/pull/2060)
- Improved CPU usage when `AppContext` switches are in use [#​2227](https://github.com/dotnet/SqlClient/pull/2227)
- Upgraded `Azure.Identity` dependency version to [1.10.3](https://www.nuget.org/packages/Azure.Identity/1.10.3) to address [CVE-2023-36414](https://github.com/advisories/GHSA-5mfx-4wcx-rv27), [#​2189](https://github.com/dotnet/SqlClient/pull/2189)
- Changed Microsoft.IdentityModel.JsonWebTokens and Microsoft.IdentityModel.Protocols.OpenIdConnect version 6.24.0 to 6.35.0 [#​2290](https://github.com/dotnet/SqlClient/pull/2290) to address [CVE-2024-21319](https://www.cve.org/CVERecord?id=CVE-2024-21319)
- Updated `Microsoft.Data.SqlClient.SNI` (.NET Framework dependency) and `Microsoft.Data.SqlClient.SNI.runtime` (.NET/.NET Standard dependency) version to `v5.2.0`. [#​2363](https://github.com/dotnet/SqlClient/pull/2363), which includes removing dead code and addressing static analysis warnings
- Code health improvements: [#​1198](https://github.com/dotnet/SqlClient/pull/1198), [#​1829](https://github.com/dotnet/SqlClient/pull/1829), [#​1943](https://github.com/dotnet/SqlClient/pull/1943), [#​1949](https://github.com/dotnet/SqlClient/pull/1949), [#​1959](https://github.com/dotnet/SqlClient/pull/1959), [#​1985](https://github.com/dotnet/SqlClient/pull/1985), [#​2071](https://github.com/dotnet/SqlClient/pull/2071), [#​2073](https://github.com/dotnet/SqlClient/pull/2073), [#​2088](https://github.com/dotnet/SqlClient/pull/2088), [#​2091](https://github.com/dotnet/SqlClient/pull/2091), [#​2098](https://github.com/dotnet/SqlClient/pull/2098), [#​2121](https://github.com/dotnet/SqlClient/pull/2121), [#​2122](https://github.com/dotnet/SqlClient/pull/2122), [#​2132](https://github.com/dotnet/SqlClient/pull/2132), [#​2136](https://github.com/dotnet/SqlClient/pull/2136), [#​2144](https://github.com/dotnet/SqlClient/pull/2144), [#​2147](https://github.com/dotnet/SqlClient/pull/2147), [#​2157](https://github.com/dotnet/SqlClient/pull/2157), [#​2164](https://github.com/dotnet/SqlClient/pull/2164), [#​2166](https://github.com/dotnet/SqlClient/pull/2166), [#​2168](https://github.com/dotnet/SqlClient/pull/2168), [#​2186](https://github.com/dotnet/SqlClient/pull/2186), [#​2254](https://github.com/dotnet/SqlClient/pull/2254), [#​2288](https://github.com/dotnet/SqlClient/pull/2288), [#​2305](https://github.com/dotnet/SqlClient/pull/2305), [#​2317](https://github.com/dotnet/SqlClient/pull/2317)

### Fixed

- Fixed Always Encrypted secure enclave retry logic for async queries. [#​1988](https://github.com/dotnet/SqlClient/pull/1988)
- Fixed activity correlator to continue use of same GUID for connection activity. [#​1997](https://github.com/dotnet/SqlClient/pull/1997)
- Fixed behavior when error class is greater than 20 on connection retry. [#​1953](https://github.com/dotnet/SqlClient/pull/1953)
- Fixed error message when symmetric key decryption failed using Always Encrypted. [#​1948](https://github.com/dotnet/SqlClient/pull/1948)
- Fixed TransactionScope connection issue when Enlist is enable, Pooling is disabled and network connection type is Redirect. [#​1960](https://github.com/dotnet/SqlClient/pull/1960)
- Fixed TDS RPC error on large queries in SqlCommand.ExecuteReaderAsync. [#​1936](https://github.com/dotnet/SqlClient/pull/1936)
- Fixed throttling of token requests by calling AcquireTokenSilent. [#​1925](https://github.com/dotnet/SqlClient/pull/1925)
- Fixed Linux code coverage result in Build proj. [#​1950](https://github.com/dotnet/SqlClient/pull/1950)
- Fixed NullReferenceException in GetBytesAsync. [#​1906](https://github.com/dotnet/SqlClient/pull/1906)
- Fixed Transient fault handling issue with OpenAsync. [#​1983](https://github.com/dotnet/SqlClient/pull/1983)
- Fixed invariant mode checks. [#​1917](https://github.com/dotnet/SqlClient/pull/1917)
- Fixed GC behavior in TdsParser by adding array rental capability in TryReadPlpUnicodeChars. [#​1866](https://github.com/dotnet/SqlClient/pull/1866)
 ... (truncated)

## 5.2.0-preview5

## [Preview Release 5.2.0-preview5.24024.3] - 2024-01-24

This update brings the below changes over the previous release:

### Added

- Added .NET 8 support [#​2230](https://github.com/dotnet/SqlClient/pull/2230)
- Added explicit version for major .NET version dependencies on System.Runtime.Caching 8.0.0, System.Configuration.ConfigurationManager 8.0.0, and System.Diagnostics.DiagnosticSource 8.0.0 [#​2303](https://github.com/dotnet/SqlClient/pull/2303)
- Added the ability to generate debugging symbols in a separate package file [#​2137](https://github.com/dotnet/SqlClient/pull/2137)

### Changed

- Changed Microsoft.IdentityModel.JsonWebTokens and Microsoft.IdentityModel.Protocols.OpenIdConnect version 6.24.0 to 6.35.0 [#​2290](https://github.com/dotnet/SqlClient/pull/2290) to address [CVE-2024-21319](https://www.cve.org/CVERecord?id=CVE-2024-21319)

### Fixed

- Fixed connection to unsubscribe from transaction completion events before returning it to the connection pool [#​2301](https://github.com/dotnet/SqlClient/pull/2301)
- Fixed InvalidCastException when reading an Always Encrypted date or time column [#​2275](https://github.com/dotnet/SqlClient/pull/2275)
- Fixed token caching to prevent expired access tokens from being reused in a connection pool [#​2273](https://github.com/dotnet/SqlClient/pull/2273)
- Code health improvements: [#​2288](https://github.com/dotnet/SqlClient/pull/2288), [#​2305](https://github.com/dotnet/SqlClient/pull/2305), [#​2254](https://github.com/dotnet/SqlClient/pull/2254), [#​2317](https://github.com/dotnet/SqlClient/pull/2317)

## 5.2.0-preview4.23342.2

## [Preview Release 5.2.0-preview4.23342.2] - 2023-12-08

### Added

- Added `SqlBatch` support on .NET 6+ [#​1825](https://github.com/dotnet/SqlClient/pull/1825), [#​2223](https://github.com/dotnet/SqlClient/pull/2223)
- Added Workload Identity authentication support [#​2159](https://github.com/dotnet/SqlClient/pull/2159), [#​2264](https://github.com/dotnet/SqlClient/pull/2264)
- Added Localization support on .NET [#​2210](https://github.com/dotnet/SqlClient/pull/2110)
- Added support for Georgian collation [#​2194](https://github.com/dotnet/SqlClient/pull/2194)
- Added support for Big Endian systems [#​2170](https://github.com/dotnet/SqlClient/pull/2170)

### Changed

- Updated `Microsoft.Data.SqlClient.SNI` (.NET Framework dependency) and `Microsoft.Data.SqlClient.SNI.runtime` (.NET/.NET Standard dependency) version to `v5.2.0-preview1.23340.1`. [#​2257](https://github.com/dotnet/SqlClient/pull/2257), which includes removing dead code and addressing TSA warnings
- Improved CPU usage when `AppContext` switches are in use [#​2227](https://github.com/dotnet/SqlClient/pull/2227)
- Upgraded `Azure.Identity` dependency version to [1.10.3](https://www.nuget.org/packages/Azure.Identity/1.10.3) to address [CVE-2023-36414](https://github.com/advisories/GHSA-5mfx-4wcx-rv27), [#​2188](https://github.com/dotnet/SqlClient/pull/2188)
- Improved error messages when validating server certificates in managed SNI (Linux/macOS) [#​2060](https://github.com/dotnet/SqlClient/pull/2060)

### Fixed

- Fixed an issue when using the Authentication option, but not encrypting on .NET Framework where the server certificate was being incorrectly validated [#​2224](https://github.com/dotnet/SqlClient/pull/2224)
- Fixed a deadlock problem for distributed transactions when on .NET [#​2161](https://github.com/dotnet/SqlClient/pull/2161)
- Fixed an issue with connecting to named instances on named pipes in managed SNI (Linux/macOS)[#​2142](https://github.com/dotnet/SqlClient/pull/2142)
- Fixed an issue when connecting to an invalid LocalDB name using managed SNI [#​2129](https://github.com/dotnet/SqlClient/pull/2129)
- Fixed an `AccessViolationException` when using a SQL Express user instance [#​2101](https://github.com/dotnet/SqlClient/pull/2101)
- Fixed a metadata query issue when connecting to Azure SQL Edge [#​2099](https://github.com/dotnet/SqlClient/pull/2099)
- Fixed file version information for .NET and .NET Standard binaries[#​2093](https://github.com/dotnet/SqlClient/pull/2093)
- Fixed the SPN sent for a named instance when using Kerberos authentication on Linux/macOS [#​2240](https://github.com/dotnet/SqlClient/pull/2240)
- Various code improvements [#​2091](https://github.com/dotnet/SqlClient/pull/2091), [#​2098](https://github.com/dotnet/SqlClient/pull/2098), [#​2121](https://github.com/dotnet/SqlClient/pull/2121), [#​2122](https://github.com/dotnet/SqlClient/pull/2122), [#​2132](https://github.com/dotnet/SqlClient/pull/2132), [#​2136](https://github.com/dotnet/SqlClient/pull/2136), [#​2144](https://github.com/dotnet/SqlClient/pull/2144), [#​2147](https://github.com/dotnet/SqlClient/pull/2147), [#​2157](https://github.com/dotnet/SqlClient/pull/2157), [#​2164](https://github.com/dotnet/SqlClient/pull/2164), [#​2166](https://github.com/dotnet/SqlClient/pull/2166), [#​2168](https://github.com/dotnet/SqlClient/pull/2168), [#​2186](https://github.com/dotnet/SqlClient/pull/2186)

## 5.2.0-preview3.23201.1

## [Preview Release 5.2.0-preview3.23201.1] - 2023-07-20

This update brings the below changes over the previous release:

### Added

- Added a new `AccessTokenCallBack` API to `SqlConnection`. [#​1260](https://github.com/dotnet/SqlClient/pull/1260)
- Added support for the `SuperSocketNetLib` registry option for Encrypt on .NET on Windows. [#​2047](https://github.com/dotnet/SqlClient/pull/2047)

### Fixed

- Fixed `SqlDataAdapter.Fill` and configurable retry logic issue on .NET Framework. [#​2084](https://github.com/dotnet/SqlClient/pull/2084)
- Fixed `SqlConnectionEncryptOption` type conversion by introducing the `SqlConnectionEncryptOptionConverter` attribute when using **appsettings.json** files. [#​2057](https://github.com/dotnet/SqlClient/pull/2057)
- Fixed th-TH culture info issue on Managed SNI. [#​2066](https://github.com/dotnet/SqlClient/pull/2066)

### Changed

- Switched to the new .NET [NegotiateAuthentication](https://learn.microsoft.com/en-us/dotnet/api/system.net.security.negotiateauthentication?view=net-7.0) API on .NET 7.0 and above for SSPI token negotiation using Managed SNI. [#​2063](https://github.com/dotnet/SqlClient/pull/2063)
- Removed `ignoreSniOpenTimeout` in open connection process on Windows. [#​2067](https://github.com/dotnet/SqlClient/pull/2067)
- Enforce explicit ordinal for internal `StringComparison` operations. [#​2068](https://github.com/dotnet/SqlClient/pull/2068)
- Code health improvements: [#​1959](https://github.com/dotnet/SqlClient/pull/1959), [#​2071](https://github.com/dotnet/SqlClient/pull/2071), [#​2073](https://github.com/dotnet/SqlClient/pull/2073), [#​2088](https://github.com/dotnet/SqlClient/pull/2088)

For detailed release notes, refer to [5.2.0-preview3.md](https://github.com/dotnet/SqlClient/blob/main/release-notes/5.2/5.2.0-preview3.md)

## 5.2.0-preview2.23159.1

## [Preview Release 5.2.0-preview2.23159.1] - 2023-06-08

This update brings the below changes over the previous release:

### Added

- Added new property `RowsCopied64` to `SqlBulkCopy`. [#​2004](https://github.com/dotnet/SqlClient/pull/2004)

### Fixed

- Fixed mixed synchronization issue in managed SNI. [#​1029](https://github.com/dotnet/SqlClient/pull/1029)
- Fixed issue with `SqlConnectionStringBuilder` property indexer not supporting non-string values. [#​2018](https://github.com/dotnet/SqlClient/pull/2018)

### Changed

- 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)
- 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)
- 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) 
- Code health improvement: [#​1985](https://github.com/dotnet/SqlClient/pull/1985)

For detailed release notes, refer to [5.2.0-preview2.md](https://github.com/dotnet/SqlClient/blob/main/release-notes/5.2/5.2.0-preview2.md)


## 5.2.0-preview1.23109.1

## [Preview Release 5.2.0-preview1.23109.1] - 2023-04-20

This update brings the below changes over the v5.1 release:

### Added

- Added support of `SqlDiagnosticListener` on **.NET Standard**. [#​1931](https://github.com/dotnet/SqlClient/pull/1931)

### Fixed

- Fixed AE enclave retry logic for async queries. [#​1988](https://github.com/dotnet/SqlClient/pull/1988)
- Fixed activity correlator to continue use of same GUID for connection activity. [#​1997](https://github.com/dotnet/SqlClient/pull/1997)
- Fixed behavior when error class is greater than 20 on connection retry. [#​1953](https://github.com/dotnet/SqlClient/pull/1953)
- Fixed error message when symmetric key decryption failed using Always Encrypted. [#​1948](https://github.com/dotnet/SqlClient/pull/1948)
- Fixed TransactionScope connection issue when Enlist is enable, Pooling is disabled and network connection type is Redirect. [#​1960](https://github.com/dotnet/SqlClient/pull/1960)
- Fixed TDS RPC error on large queries in SqlCommand.ExecuteReaderAsync. [#​1936](https://github.com/dotnet/SqlClient/pull/1936)
- Fixed throttling of token requests by calling AcquireTokenSilent. [#​1925](https://github.com/dotnet/SqlClient/pull/1925)
- Fixed Linux code coverage result in Build proj. [#​1950](https://github.com/dotnet/SqlClient/pull/1950)
- Fixed NullReferenceException in GetBytesAsync. [#​1906](https://github.com/dotnet/SqlClient/pull/1906)
- Fixed Transient fault handling issue with OpenAsync. [#​1983](https://github.com/dotnet/SqlClient/pull/1983)
- Fixed invariant mode checks. [#​1917](https://github.com/dotnet/SqlClient/pull/1917)
- Fixed GC behavior in TdsParser by adding array rental capability in TryReadPlpUnicodeChars. [#​1866](https://github.com/dotnet/SqlClient/pull/1866)

### Changed

- Updated Azure Identity version from 1.7.0 to 1.8.0. [#​1921](https://github.com/dotnet/SqlClient/pull/1921)
- Improved parsing buffered characters in `TdsParser`. [#​1544](https://github.com/dotnet/SqlClient/pull/1544)
- Removed reference to Microsoft.Win32.Registry since it's shipped starting with .NET 6.0. [#​1974](https://github.com/dotnet/SqlClient/pull/1974)
- Added Microsoft.SqlServer.Types to verify support for SqlHierarchyId and Spatial for .NET Core. [#​1848](https://github.com/dotnet/SqlClient/pull/1848)
- Code health improvements:[#​1943](https://github.com/dotnet/SqlClient/pull/1943)[#​1949](https://github.com/dotnet/SqlClient/pull/1949)[#​1198](https://github.com/dotnet/SqlClient/pull/1198)[#​1829](https://github.com/dotnet/SqlClient/pull/1829)

For detailed release notes, refer to [5.2.0-preview1.md](https://github.com/dotnet/SqlClient/blob/main/release-notes/5.2/5.2.0-preview1.md)

## 5.1.7

This update brings the following changes since the 5.1.6 release:

### Fixed

- Fixed possible `NullPointerException` during socket receive (PR [#​3285](https://github.com/dotnet/SqlClient/pull/3285))
- Fixed inconsistencies between source and reference projects (PR [#​3180](https://github.com/dotnet/SqlClient/pull/3180))

### Changed

- Updated the following dependencies:
  - [Microsoft.Data.SqlClient.SNI](https://www.nuget.org/packages/Microsoft.Data.SqlClient.SNI/5.1.2) 5.1.1 to 5.1.2 for .NET Framework on Windows (PR [#​3294](https://github.com/dotnet/SqlClient/pull/3294))
  - [Microsoft.Data.SqlClient.SNI.runtime](https://www.nuget.org/packages/Microsoft.Data.SqlClient.SNI.runtime/5.1.2) 5.1.1 to 5.1.2 for .NET on Windows (PR [#​3294](https://github.com/dotnet/SqlClient/pull/3294))
  - [Microsoft.Extensions.Caching.Memory](https://www.nuget.org/packages/Microsoft.Extensions.Caching.Memory/6.0.3) 6.0.1 to 6.0.3 - Avoid [CVE-2024-43483](https://github.com/advisories/GHSA-qj66-m88j-hmgj) (PR [#​3068](https://github.com/dotnet/SqlClient/pull/3068))
  - [Microsoft.Extensions.Hosting](https://www.nuget.org/packages/Microsoft.Extensions.Hosting/6.0.1) 6.0.0 to 6.0.1 - Avoid transitive dependency on vulnerable [System.Text.Json](https://www.nuget.org/packages/System.Text.Json/6.0.0) 6.0.0 (PR [#​3207](https://github.com/dotnet/SqlClient/pull/3207))
  - [System.Private.Uri](https://www.nuget.org/packages/System.Private.Uri) 4.3.2 - Avoid transitive [CVE-2019-0820](https://msrc.microsoft.com/update-guide/en-US/advisory/CVE-2019-0820) (PR [#​3077](https://github.com/dotnet/SqlClient/pull/3077))
  - [System.Text.Encodings.Web](https://www.nuget.org/packages/System.Text.Encodings.Web/6.0.1) 6.0.0 to 6.0.1 - Avoid transitive downgrade for .NET Framework targets (PR [#​3279](https://github.com/dotnet/SqlClient/pull/3279))
  - [System.Text.Json](https://www.nuget.org/packages/System.Text.Json/6.0.11) 6.0.11 - Avoid transitive dependencies on older vulnerable versions for .NET Framework targets (PR [#​3279](https://github.com/dotnet/SqlClient/pull/3279))

## 5.1.6

## [Stable release 5.1.6] - 2024-08-27

### Fixed

- Fixed Transient fault handling issue with `OpenAsync`. [#​1983](https://github.com/dotnet/SqlClient/pull/1983) [#​2508](https://github.com/dotnet/SqlClient/pull/2508)
- Fixed `AcquireTokenAsync` timeout handling for edge cases in `ActiveDirectoryAuthenticationProvider`. [#​2706](https://github.com/dotnet/SqlClient/pull/2706)
- Fixed pending data with `SqlDataReader` against an encrypted column. [#​2618](https://github.com/dotnet/SqlClient/pull/2618) [#​2818](https://github.com/dotnet/SqlClient/pull/2818)

### Changed

- Upgraded `Azure.Identity` version from 1.11.3 to 1.11.4 [#​2649] (https://github.com/dotnet/SqlClient/pull/2649) [#​2529] (https://github.com/dotnet/SqlClient/pull/2529) to address [CVE-2024-35255](https://github.com/advisories/GHSA-m5vv-6r4h-3vj9).
- Upgraded `Microsoft.Identity.Client` version from 4.60.0 to 4.61.3 [#​2649] (https://github.com/dotnet/SqlClient/pull/2649) [#​2529] (https://github.com/dotnet/SqlClient/pull/2529) to address [CVE-2024-35255](https://github.com/advisories/GHSA-m5vv-6r4h-3vj9).
- Added caching to `TokenCredential` objects to take advantage of token caching. [#​2776](https://github.com/dotnet/SqlClient/pull/2776)
- Code health improvements: [#​2490] (https://github.com/dotnet/SqlClient/pull/2490)

Commits viewable in [compare view](https://github.com/dotnet/sqlclient/compare/v5.1.5...v6.1.2).
</details>

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=Microsoft.Data.SqlClient&package-manager=nuget&previous-version=5.1.5&new-version=6.1.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

steingran and others added 29 commits November 1, 2025 12:51
Adding impelmentation of leader election for Azure Blob Storage, Consul, FileSystem, InMemory, PostgreSQL, Redis, SqlServer and ZooKeeper. Adding tests. Adding Github Action for build and running tests. Adding MinVer versioning. Adding .eidtorconfig file, .gitattributes and .gitignore.

Fixes #1
…s workflow

Replace docker-compose with docker compose in Github Actions workflow since Github Action runners no longer have the docker-compose command installed by default.

Fixes #1
Adding health checks in docker-compose.yml file, renaming container names, added timeouts for running tests in the Github Action workflow

Fixes #1
Ensure the directorypath exists in the tests, and create it if it does not exist

Fixes #1
Resolving possible race condition in the FileSystem provider, consecutive await using statements could cause disposal problems and could cause hangs

Fixes #1
…topAsync is called before disposal

IHost instance is not being properly disposed when StopAsync is called before disposal, leaving background services running and causing tests to hang. Changed the entire approach in the IsZooKeeperAvailableAsync() method to create an instance of the ZooKeeperLeaderElectionProvider class and calling the health check method to check whether ZooKeeper is available.

Fixes #1
…ed when StopAsync is called before disposal

Similar to the issue for ZooKeeper. IHost instance is not being properly disposed when StopAsync is called before disposal, leaving background services running and causing tests to hang. Changed the entire approach in the IsPostgreSqlAvailableAsync() and IsSqlServerAvailableAsync() methods to create an instance of the LeaderElextion provider classes and calling the health check method to check whether PostgreSQL and SqlServer are available.

Fixes #1
…nto the tests

Changed a GetAwaiter().GetResult() call that had snuck into the tests, and created a version of the WaitForConditionAsync method which takes a Func<Task<bool>> instead of just Func<bool> to properly handle async conditions without blocking. Removed properties not used in Is*AvailableAsync() methods

Fixes #1
Correct Github Action workflow permissions:
- added contents:read for the workflow to read repository contents
- added checks:write for the workflow to create check runs (required by dorny/test-reporter)
- added pull-requests:write for the workflow to comment on pull requests with test results

Fixes #1
Collections were still being modified by background tasks(s) when test assertions were enumerating the collection, causing trouble. A total of four tests were fixed.

Fixes #3
…fied

Even after awaiting eventTask the collection could still be modified, correcting this by taking a thread-safe snapshot of the collection before making assertions

Fixes #3
Apply thread-safe snapshot pattern to all tests that access the shared events collection to prevent "Collection was modified; enumeration operation may not execute" errors in Github Actions.

Changes:
- Take array snapshot of events collection while holding lock before making assertions in 6 tests: Where_ShouldFilterEvents, Take_ShouldLimitNumberOfEvents, Skip_ShouldSkipEvents, DistinctUntilChanged_ShouldFilterConsecutiveDuplicates,  Throttle_ShouldLimitEventRate, and Debounce_ShouldDelayEvents
- Reorder cleanup and assertions to ensure background tasks complete before accessing the collection
- Use .Length property instead of .Count for array assertions
- Add explanatory comments for exception handling during cleanup

This ensures complete thread-safety by creating immutable snapshots of the collection while holding the lock, eliminating any possibility of race conditions during enumeration. All 16 tests now pass reliably in both local and GitHub Actions environments.

Fixes #3
Implemented IAsyncDisposable to prevent ObjectDisposedException when timer callbacks execute during disposal. Added active callback tracking with atomic operations and wait mechanism to ensure safe shutdown.

Includes 8 new tests covering concurrent disposal scenarios.
Add centralized parameter validation to prevent invalid inputs across all provider implementations and service extensions.

Changes:
- Created ParameterValidation helper class with validation methods for election groups, participant IDs, metadata, and lock timeouts
- Added validation to all 8 provider implementations (PostgreSQL, SQL Server, Redis, FileSystem, InMemory, Consul, ZooKeeper, Azure Blob Storage)
- Added null checks to LeaderElectionServiceExtensions methods
- Updated ILeaderElectionProvider XML documentation with validation requirements and exception details
- Added 108 comprehensive validation tests covering all scenarios

Validation enforces:
- Non-null, non-empty, non-whitespace identifiers
- Alphanumeric characters, underscores, hyphens, and periods only
- Maximum length limits (255 chars for identifiers, 4000 for metadata values)
- Positive lock timeouts not exceeding 1 day
- Metadata entry limits (max 100 entries)
Improve disposal patterns across all provider implementations to ensure consistent, safe, and non-blocking resource cleanup.

Changes:
- Implemented IAsyncDisposable for Consul and ZooKeeper providers to properly handle async cleanup operations without blocking threads
- Standardized disposal pattern across all 8 providers to use early return pattern for consistency
- Added 11 comprehensive disposal tests covering basic disposal, double disposal safety, and ObjectDisposedException after disposal
- Added detailed XML documentation for DisposeAsync() and Dispose() methods in providers with async cleanup

Providers modified:
- ConsulLeaderElectionProvider: Added IAsyncDisposable, replaced blocking .Wait() with proper async disposal of Consul sessions
- ZooKeeperLeaderElectionProvider: Added IAsyncDisposable, replaced blocking .Wait() with proper async disposal of ZooKeeper connection
- SqlServerLeaderElectionProvider: Standardized disposal pattern
- RedisLeaderElectionProvider: Standardized disposal pattern

Test coverage:
- All providers now have disposal tests ensuring idempotent disposal
- All providers verify methods throw ObjectDisposedException after disposal
- Async-disposable providers have dedicated DisposeAsync() tests
- Total: 217 tests
…y descriptions

Add comprehensive concurrent scenario tests validating thread-safety and
race condition handling across multiple participants.

- Add ConcurrentScenarioTests.cs with tests for:
  - Multiple participants competing for leadership
  - Rapid acquire/release cycles
  - Concurrent heartbeat updates
  - Leader failover scenarios

- Update README.md:
  - Rename all "LeaderElection.Net" references to "MultiLock"
  - Add "Concurrency and Thread-Safety" documentation section
  - Update package names, namespaces, and project paths

- Enhance disposal patterns in provider tests
…Drafter

Implement comprehensive CI/CD infrastructure for automated NuGet package publishing and release management to prepare MultiLock for production deployment.

### NuGet Publishing Workflow
- Add automated NuGet publishing workflow with manual and tag-based triggers
- Configure package validation using dotnet-validate tool
- Implement selective publishing to exclude core MultiLock package (embedded in providers)
- Add dry-run mode for testing without actual publication
- Include symbol package (.snupkg) publishing for debugging support
- Integrate with Release Drafter for automatic changelog updates

### Package Configuration & Standardization
- Centralize package metadata in Directory.Build.props
- Implement MinVer for semantic versioning from Git tags (v-prefix, 1.0 minimum)
- Enable SourceLink for source code debugging support
- Configure deterministic builds for reproducibility
- Add XML documentation generation for all packages
- Standardize package metadata (authors, license, repository, tags)
- Optimize package logo to NuGet standards (128x128px, 27.65 KB)

### Release Automation
- Add Release Drafter for PR-based automatic changelog generation
- Configure 9 changelog categories (Breaking Changes, Features, Bug Fixes, etc.)
- Implement auto-labeling based on files, branches, and PR titles
- Create comprehensive label definitions (215 labels across all categories)
- Add PR template to guide contributors on proper labeling

### Project Structure Improvements
- Clean up all .csproj files by removing redundant properties
- Standardize provider package configuration across all 8 providers
- Update .gitignore to exclude build artifacts and temporary files

### Documentation
- Add comprehensive Release Drafter usage guide
- Document GitHub Actions workflows and their purposes
- Create label setup automation script

This implementation provides a production-ready CI/CD pipeline that ensures consistent versioning, automated changelog generation, and reliable package publishing to NuGet.org for all 8 MultiLock provider packages.
Adding CONTRIBUTING.ms and CODE_OF_CONDUCT.md file, correcting minor issue in the setup-labels.ps1 powershell file
Fixes validation error when updating draft releases. The pull_request_target event provides valid commit references instead of PR merge refs.
Correcting minor language issue in the CODE_OF_CONDUCT.md file, and correcting sample code in the CONTRIBUTING.md file
Setting up Dependabot for version updates
@dependabot dependabot bot added the .NET Pull requests that update .NET code label Nov 8, 2025
@dependabot dependabot bot added dependencies Dependency updates major Breaking changes - major version bump labels Nov 8, 2025
@dependabot dependabot bot requested a review from steingran as a code owner November 8, 2025 23:11
dependabot bot added 2 commits November 9, 2025 20:48
…oft.Extensions.Logging.Abstractions

Bumps Microsoft.Extensions.DependencyInjection.Abstractions from 8.0.0 to 9.0.10
Bumps Microsoft.Extensions.Logging.Abstractions from 8.0.0 to 9.0.10

---
updated-dependencies:
- dependency-name: Microsoft.Extensions.DependencyInjection.Abstractions
  dependency-version: 9.0.10
  dependency-type: direct:production
  update-type: version-update:semver-major
- dependency-name: Microsoft.Extensions.Logging.Abstractions
  dependency-version: 9.0.10
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
---
updated-dependencies:
- dependency-name: Microsoft.Data.SqlClient
  dependency-version: 6.1.2
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot bot force-pushed the dependabot/nuget/Microsoft.Data.SqlClient-6.1.2 branch from 52ab3dd to 351a7e2 Compare November 9, 2025 19:54
@steingran steingran closed this Nov 9, 2025
@dependabot @github
Copy link
Contributor Author

dependabot bot commented on behalf of github Nov 9, 2025

OK, I won't notify you again about this release, but will get in touch when a new version is available. If you'd rather skip all updates until the next major or minor version, let me know by commenting @dependabot ignore this major version or @dependabot ignore this minor version. You can also ignore all major, minor, or patch releases for a dependency by adding an ignore condition with the desired update_types to your config file.

If you change your mind, just re-open this PR and I'll resolve any conflicts on it.

@dependabot dependabot bot deleted the dependabot/nuget/Microsoft.Data.SqlClient-6.1.2 branch November 9, 2025 21:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Dependency updates major Breaking changes - major version bump .NET Pull requests that update .NET code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants